{"version":3,"file":"static/chunks/pages/limit/[pair]-c617dfb595ada279.js","mappings":"AUACA,CAAAA,KAAK,gBAAmB,CAAGA,KAAK,gBAAmB,EAAI,EAAE,EAAEC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAEnE,MACC,SAASC,CAAuB,CAAEC,CAAwB,CAAEC,CAAmB,CAAE,CVDxF,CAAAC,OAAAC,QAAA,CAAAD,OAAAC,QAAA,MAAAL,IAAA,EACA,gBACA,UAAe,CACf,OAAAG,EAAA,MACA,EACA,CAKA,iBAAAF,CAAA,CAAAK,CAAA,CAAAH,CAAA,mBAAAI,EAAAJ,EAAA,OAAAK,EAAAL,EAAAM,CAAA,CAAAF,GAAAG,EAAAP,EAAA,OAAAQ,EAAAR,EAAA,OCZoCS,EAAAT,EAAA,OASmC,IACrEU,EAAe,IACf,IAAMC,EAAE,GAASJ,EAAgBK,SAAA,IAE3B,CAACC,UAAAA,CAAA,CAAAC,UAAAA,CAAsB,KAAAL,EAAmCM,EAAC,IACjE,CAAAC,EAAAC,EAAgB,IAAAT,EAAAU,QAAA,EAAAC,GAAA,GAAAX,EACWY,SAAA,MACvB,CAEDH,EAAA,GAAAZ,IAAAW,EAAAG,GAAAH,EAAAG,CAAA,IAAmBA,EAEtB,EAAqE,GAAC,CAAAE,EAAAC,EAAA,IAAAd,EAAAU,QAAA,GAAI,GAAG,GAE7E,EAAgB,GAAAV,EACeY,SAAA,WAQzBG,EAEAC,EARJ,GAAAX,GAAM,CAAYC,EAAO,MAAO,CAChC,IAAMW,EAAQC,OAAUzB,OAAM0B,QAAA,CAAAC,QAAA,CAAAC,KAAA,MAAAC,GAAA,IAAAC,WAAA,GAE1BC,EAAMP,EAAcI,KAAA,CAnBtB,KAqBF,GAAIG,CAAAA,CAAAA,EAAAC,MAAA,MAAAD,CAAAA,EAAAC,MAAA,KAGoB,GACtBD,IAAAA,EAAAC,MAAA,CAIF,IAAO,CADLT,CAAAA,EAAKV,EAAeoB,IAAA,IAAAC,EAAAC,YAAA,CAAAL,WAAA,KAAAC,CAAA,MACf,YAKN,GAHCT,EAAAT,EAAgBoB,IAAU,CAAI,GAAEC,EAAMC,YAAE,CAAYL,WAAC,KAAWC,CAAO,CAAK,EAAC,EAE7ER,EAAKV,EAAiBoB,IAAA,IAAAC,EAAeC,YAAA,CAAAL,WAAA,KAAAC,CAAA,KACtC,CAAAT,GAAA,CAAAC,EAAA,OAEmCF,EAC3B,GAAY,CACnB,GAAM,CAAAe,EAAAC,EAAmB,CAAAjB,EACnBkB,EAAA,CAAoBhB,MAAAA,EAAA,OAAAA,EAAAiB,YAAe,GAAYH,EAE/CI,EAA4B,CAAAjB,MAAAA,EAC9B,OAAAA,EAAAgB,YAAA,GAAAF,EAACI,EAAAH,IAAAE,EAAA,CAAI,GACLA,EAAA,CAAC,CAAkBF,EAAkBE,EACzC,CACF,OAAApC,IAAAqC,EAAArB,GAAAA,EAAAqB,CAAA,GAxBI,EAyBH,CAAY7B,EAAUC,EAEzB,EAAgB,GAAAN,EACTY,SAAA,UAAC,EAAS,QAAgB,eAAiB,gBAChD,CAAAuB,QAAI,CAAAhC,EAAciB,QAAA,GAElBf,GAAgB,CAAAC,EAFa,OAG7B,IAAM8B,EAAA9B,EAAWoB,IAAU,CAAI,GAAEC,EAAMK,YAAE,GAAYnB,CAAK,CAAa,EAAC,EAEpEwB,EAAY/B,EAAUoB,IAAA,IAAAC,EAAAK,YAAA,GAAAnB,CAAA,KAE1B,GAAAuB,GAAM,CAAAC,EAAe,WAACC,EAAA,CAAuBF,MAAAA,EAAA,OAAAA,EAAAR,YAAU,CACpDS,MAAAA,EACK,OAAAA,EAAAT,YAAA,CAER,CAAAW,MAAK,CAAAC,SAAAC,IAAc,CA7DjB,KA+DF,IAAAH,EAAM,MAAe,CACrB,IAAMI,EAAWjD,OAAO0B,QAAQ,CAAKwB,MAAA,CAErCvB,EAAejB,UAAAA,EAAAiB,QAAiB,CAAQ,eAA2DjB,EAA3CiB,QAAS,CAChE3B,OAAAmD,OAAA,CAAAC,YAAA,WAAAC,MAAA,CAAA3C,EAAA4C,MAAA,EAAAD,MAAA,CAAA1B,EAAA4B,OAAA,UAAAV,IAAAQ,MAAA,CAAAJ,GAAA,GAAYrC,EAAeQ,EAAQV,EAAUG,EAEhD,EAEE,IAAC2C,EAAA,GAAAjD,EAAAkD,OAAA,MAAArC,CAAA,KAAAA,CAAA,IAAAA,EAAAL,CAAA,EAAsBA,EAAcK,EAGvC,EAEIsC,EAAwB,GAAAnD,EAAiCoD,WAAA,KAA6B,CAExFtC,EAAA,mBAAAuC,EAAAA,EAAAJ,GAAAI,CAAA,IAAoBJ,EAGtB,EAAO,MACL,CACApC,cAAAoC,EACFnC,iBAAAqC,CACF,CAEA,CAAoCxD,CAAAA,EAAA,EAAAO,CAAA,iBAAAZ,CAAA,CAAAK,CAAA,CAAAH,CAAA,eAAAA,EAAA8D,CAAA,CAAA3D,EAAA,qBAAA4D,CAAA,sBAAAC,CAAA,QAAAC,EAAAjE,EAAA,OAAAkE,EAAAlE,EAAA,OAAAmE,EAAAnE,EAAA,OAAAoE,EAAApE,EAAA,OAAAqE,EAAArE,EAAAM,CAAA,CAAA8D,GAAAE,EAAAtE,EAAA,OAAAuE,EAAAvE,EAAA,OAAAwE,EAAAxE,EAAA,OAAAyE,EAAAzE,EAAA,OAAA0E,EAAA1E,EAAA,OAAA2E,EAAA3E,EAAA,OAAA4E,EAAA5E,EAAA,OAAA6E,EAAA7E,EAAA,OAAA8E,EAAA9E,EAAA,OAAA+E,EAAA/E,EAAA,OAAAgF,EAAAhF,EAAA,MAAAiF,EAAAjF,EAAA,OAAAkF,EAAAlF,EAAA,OAAAmF,EAAAnF,EAAA,OCxE9B,IAAAoF,EAJJ,QAKAC,EAAuBC,EAAAC,EADxB,GAUK,CAAAC,cAAAA,CAAA,CAAAC,WAAAA,CAyFwB,EAAAC,EAjGtB,CAAEC,WAAAA,CAAS,CAAE,CAAG,GAAAT,EAAAU,EAAA,IAChB,CAAEC,UAAAA,CAAM,KAAAb,EAAiBc,CAAA,IAEzB,CAAAC,KAAAC,CAAS,EAAS,GAAAf,EAAAgB,CAAA,IACtBC,EAAU,GAAAnB,EAAAoB,QAAA,GAAAC,SACR,CACA,aACAZ,MAAAA,EAAA,OAAAA,EAAmBa,QAAA,GACnBR,MAAAA,EAAA,OAAAA,EAAAQ,QAAA,GACDZ,MAAAA,EAAA,cAAAJ,CAAAA,EAAAI,EAAAa,WAAA,GAAAjB,KAAA,IAAAA,EAAA,OAAAA,EAAAkB,uBAAA,GACD,CACE,MADmBC,SAEjB,CAIF,GACG,CAAAC,cAAAA,CAAA,CACAH,YAAAA,CAAA,EACAb,GAAA,GAIH,IAAAD,GAAkB,CAAAiB,GAAkB,CAAAH,CAAAA,MAAAA,EAAA,OAAAA,EAAAP,IAAA,IAAAF,EAAA,aAE9BS,EAAAI,iBAAoC,CAAAf,GAC1C,IAAMgB,EAAA,GACAC,EAAAN,EAAsBO,iBAAY,CAAAhB,GAClCiB,EAAAR,EAAuBS,kBAAyB,CAAAlB,GAAiCmB,EAAAP,EAAAQ,UAAA,CAAApB,EAAAL,EAAAa,QAAA,IAGnFa,EAAaZ,EAAAP,IAAA,CAAAoB,OAAA,CAAAC,GAAA,CAAAvB,EAAAQ,QAAA,OACfa,EAAM,CACN,IAAMG,EAAOf,EAAmBP,IAAC,CAAIuB,yBAAA,CAAAF,GAAA,CAAAvB,EAAAQ,QAAA,IAC/BkB,EAAOd,EAAce,KAAK,CAACD,IAAA,CAE5BE,EAAOhB,EAAee,KAAI,CAAAE,aAAA,QAAI,CAAAC,EAAYC,EAAK,EAAI,IAAKtB,EAAYP,IAAI,CAAC8B,IAAI,IAAGvB,EAAAP,IAAA,CAAA+B,IAAA,EACrC,GAC5C,GAAAhD,EAAMiD,GACJ,EAAAH,EAAOP,WAAa,IAAKA,EAAW,CAShCO,IAAAA,EAAsBI,aAAA,EAAAJ,EAAAI,aAAwB,CAACT,GAASK,IAAAA,EAAAK,+BAAQ,EAAAL,EAAAK,+BAAA,CAAAR,GAAAG,EAAAK,+BAAA,CAAAC,GAAA,CAAAT,GAAAU,GAAA,KAAAvD,EAAAwD,EAAA,KAAAC,QAAA,GACtE,IAAMC,EAAsB,GAAAxD,EAC1ByD,GAAK,EAACZ,GAAQU,QAAA,GAGVG,EAAO/B,EAAcgC,iBAAA,IAAA3D,EACXiD,GAAA,EAAAJ,EAAAe,YACZ,EAAAlD,EAAAa,QAAY,IAKVsC,EAAOlC,EAAAmC,uBAAA,CAAAnC,EAAAoC,mBAA2C,IAAA/D,EAAmBiD,GAAA,EAAAH,EAAAkB,WAAA,EAAAtD,EAAAa,QAAA,IAAAb,EAAAa,QAAA,IAAA0C,EAAA,GAAA5D,EAAA6D,EAAA,EAAArB,EAAAW,mBAAA,EAEtD3B,EACnB9G,IAAA,EACA+H,MAAAA,EACAD,QAAAA,EACAJ,KAAAA,EACAE,KAAAA,EACAsB,KAAAA,EACAT,oBAAAA,EACAE,MAAAA,EACFG,KAAAA,CACD,EACH,EAKF,MACE,CACAzB,YAAAA,EACAF,qBAAAA,EACAJ,mBAAAA,EACAE,oBAAAA,EACFmC,aAAAtC,CACF,CACA,EACAuC,qBACE,GAIFC,QAAAnG,QAAA,CAAkBgD,MAAAA,EAAI,OAAAA,EAAAoD,yBAAA,GAAAvD,GAAAJ,GACxB4D,iBAAA,EAEA,GAKO,MALU,GAAAxE,EACCyE,CAAA,GAChBC,eAAA,CAAA1D,MAAAA,EAAqC,OAAXA,EAAAQ,QAAA,iBAC5BmD,yBAAA,QAAAlE,CAAAA,EAAAY,EAAAH,IAAA,GAAAT,KAAA,IAAAA,EAAA,cAAAC,CAAAA,EAAAD,EAAA0B,oBAAA,GAAAzB,KAAA,IAAAA,EAAA,OAAAA,EAAAc,QAAA,gBAEA,GACK,CACH,GAAAH,CAAA,CACFuD,oBAAAvD,EAAArF,SAAA,EAAAqF,EAAAwD,UAAA,CAGF,EAAiC,IAAAC,EAAA3J,EAAA,OCpHe,IAC9C4J,EAAW,CACXC,QAAA,GACAZ,aAAA,GACAa,oBAAqB,GACrBL,oBAAqB,GACrBM,oBAAkB,IAAM,IAAI,CAC5BzI,iBAAA,IAAmB,IAAK,CACxB0I,kBAAA,GACAC,mBAAA,IAAqBC,KAAAA,EACrBC,oBAAsB,IAAAD,KAAAA,EACxBE,eAAA,KAEA,EAEaC,EAAiD,GAAA/F,EAAAgG,aAAA,EAAAV,GAAA7F,EAAL,IACvD,IAAMwG,SAAAA,CAAE,EAAA7E,EAA2D,CAAArE,cAAAA,CAAA,CAAAC,iBAAAA,CAAA,KAAAiD,EAAAuB,CAAA,GAAI,GAAG,GAE1E,EAEM,CAAC0E,aAAAA,CAAA,CAAAC,aAAAA,CAAkB,KAAkBjG,EAAiBkG,EAAA,MAAgB,CAAAC,EAAAC,EAAA,IAAAtG,EAAAZ,OAAA,MAAArC,EAAA,CAAcA,EAC1F,EAA0C,CAAAuB,EACxCC,EAAA,CAAmB,GAAAyB,EAAAZ,OAAa,OAChCiH,EAAAF,EAAoBE,GAAaT,KAAAA,CAAqB,CACrDU,EAAAH,EAAAG,GAAAV,KAAAA,CAAA,CAAC,EAAcO,EAAkBE,EAAkBC,EAEtD,EACEb,EAAiB,GAAYzF,EAAAV,WAAA,OAAAtC,EAAL,QAAAuJ,EAAKC,EAAA,CAAApF,EAAA,MAAC,CAAGoF,EAAED,EAAD,EACjC,GAAkBvJ,EAErB,EAKM,CAAAyE,KAAA8D,CAAA,CAAgBH,WAAAqB,CAAc,KAAArG,EAAAoB,CAAA,IAClCN,EAAc,GAAAlB,EAAAZ,OAAA,OAEd,IAAAmG,EAAM,MAAS,CACb,IAAAmB,EACEnB,EAAA3H,IAAA,IACA,CACI,IAAA+I,wBAAAA,CACJ,CAAAC,yBAAAA,CAAA,EAAAxF,EAAA,OAACrB,IAAA,CAAyB4G,EAA0BC,EACpD,CAAAC,IAAC,IAAkBvI,MAAAA,EAAA,OAAAA,EAAAwI,OAAU,CAASvI,MAAAA,EAAI,OAAAA,EAAAuI,OAAA,EAEzCD,IAAA,GAEL,IAAAtB,CAAW,IACV,WAAA3F,EAAAmH,SAAA,CAAAL,EAAAM,cAAA,IAEDzB,EACAjH,MAAAA,EAAA,OAAAA,EAAAwI,OAAU,CACXvI,MAAAA,EAAA,OAAAA,EAAAuI,OAAA,CAED,EAMM,CAACrF,KAAAN,CAAW,CAAA5E,UAAciJ,CAAc,CAAAyB,eAAAC,CAAA,KAAA7G,EAAAmB,CAAA,EAAAN,GAC5C,CAAAiG,EAAIC,EAAmB,IAAApH,EAAAZ,OAAA,QAEnB,CACAd,GAAA4H,EAAYpD,GAAa,CAAGxE,EAACwI,OAAS,EACvCvI,GAAA2H,EAAApD,GAAA,CAAAvE,EAAAuI,OAAA,EACF,CAGC,CACA,CAAA3F,MAAAA,EAAA,OAAAA,EAAYkG,oBAAA,GAAqBnB,EAAIpD,GAAa,CAAG3B,EAACkG,oBAAW,CAAAtF,QAAsB,IACxF,CAAAZ,MAAAA,EAAA,OAAAA,EAAAmG,qBAAA,GAAApB,EAAApD,GAAA,CAAA3B,EAAAmG,qBAAA,CAAAvF,QAAA,IACA,EAAoBmF,EAAY/F,EAAS7C,EAAc4H,EAAS3H,EAEnE,EAIyB,CAAAkD,KAAA8F,CAAA,CAAApC,oBAAAA,CAAA,EAAAqC,EAAA,CAAetG,cAAAA,EAAWC,WAAAA,CAEnD,GACEsG,EAAI,GAAAzH,EAAqBZ,OAAC,OAE1B,GAAA8H,GAAoB,CAAA/F,CAAAA,MAAAA,EAAkC,OAAAA,EAAAa,WAAA,SACtD,IAAAyF,EAAiBtG,EAAea,WAAY,CAAA0F,WAAK,GAEhD,OADDD,EAAOlE,IAAA,CAAAsD,IAAA,EAAAN,EAAAC,IAAAA,EAAAtC,KAAA,CAAAqC,EAAArC,KAAA,EACNuD,CAAA,GAEDP,EACD/F,MAAAA,EAAA,OAAAA,EAAAa,WAAA,CAED,EAAgB,GAAAhC,EACdlD,SAAA,OAUE,GACA,CAAAoK,GAAM/F,CAAAA,MAAAA,EAA+D,OAAAA,EAAAkG,oBAAA,GAAAlG,CAAAA,MAAAA,EAAA,OAAAA,EAAAmG,qBAAA,GAAAhJ,GAAAC,EAAA,CACrE,IAAM8I,EAAAlG,EAAwBkG,oBAAW,CAAAtF,QAAsB,GACzDuF,EAAYnG,EAChBmG,qBAAA,CAAAvF,QAAA,GAAC4F,EAAA5H,IAAA,CAAsBsH,EAAuBC,EAC9C,CAAAT,IAAC,IAAiBvI,EAAAwI,OAAS,CAASvI,EAAIuI,OAAA,CAE1C,CAAAD,IAAK,IACHc,GAAiB3K,EACf,CACAqK,EACDC,EACF,CAEF,IAEDJ,EACA/F,MAAAA,EAAA,OAAAA,EAAYkG,oBAAA,CACZlG,MAAAA,EAAA,OAAAA,EAAAmG,qBAAA,CACAhJ,EACAC,EACDvB,EAED,EAGiC,IAAA4K,EAACC,EAAA,IAAA7H,EAAAZ,OAAA,MAAA+H,GAAAC,EAAA,GAAA/B,EAAAyC,EAAA,GAAWX,EAAWC,EAChD,EAAC,CAAWD,EAClBC,EAAC,EAAWD,EAAWC,EAEzB,EAEM1B,EAAgB,CAAAmC,MAAAA,EAAc,OAAAA,EAAAf,OAAA,IAAAK,CAAAA,MAAAA,EAAA,OAAAA,EAAAL,OAAA,EAClCiB,EAAM,GAAA/H,EAAAZ,OAA0B,OAEG,IAAA4I,EAAR,GAAEC,EAAAC,GAAA,SAAAhE,MAAAA,CAAM,CAAAiE,SAAAA,CAAA,EAAA/G,EAAA,MAC7B,CACA8C,MAAA,IAAUrE,EAAI2B,CAAA,CAAA0C,GAAQkE,GAAO,KAAIC,QAAA,GACnCF,SAAA,IAAAtI,EAAA2B,CAAA,CAAA0C,GAAAoE,GAAA,CAAAH,GAAAE,QAAA,EACC,CAEL,GAAMxB,IAAA,EAAAN,EAAAC,IAAAA,EAAAtC,KAAiB,CAAAqC,EAAArC,KAAA,EACrBqE,EAAMd,GAAuB,CAC7BlE,KAAMyE,EAAuBP,EAAYjE,IAAI,EAC/CA,KAAAwE,EAAAP,EAAAlE,IAAA,CACA,EACC,OAAAmC,EAAA6C,EAAAd,CAAA,GAAcA,EAAkB/B,EAEnC,EAEI8C,EAAA,GAAAxI,EAAAZ,OAAA,MAIF,CAAA+B,MAAAA,EAAA,OAAAA,EAAAa,WAAA,GAAAb,EAAAa,WAAA,CAAAyG,sBAAA,CAAAtH,EAAAa,WAAA,CAAA0G,+BAAA,CAAAC,OAAAC,OAAA,IAAyBzH,MAAAA,EAAA,OAAAA,EAAAa,WAAA,CAG3B,EAEI2D,EAAA,GAAA3F,EAAAV,WAAA,KAIF,CAAA6B,MAAAA,EAAA,OAAAA,EAAAa,WAAA,GAAAb,EAAAa,WAAA,CAAAyG,sBAAA,CAAAtH,EAAAa,WAAA,CAAA6G,iCAAA,CAAAC,IAAA,CAAyB3H,MAAAA,EAAA,OAAAA,EAAAa,WAAA,CAG3B,EAEI6D,EAAA,GAAA7F,EAAAV,WAAA,KAIF,CAAA6B,MAAAA,EAAA,OAAAA,EAAAa,WAAA,GAAAb,EAAAa,WAAA,CAAA+G,qBAAA,CAAA5H,EAAAa,WAAA,CAAAgH,qBAAA,CAAAC,IAAA,CAAyB9H,MAAAA,EAAA,OAAAA,EAAAa,WAAA,CAG3B,EACuC8D,EAArB,GAAA9F,EAAAV,WAAA,WAAA4E,CAAA,EACd,IAAIgF,EAACC,UAAAxL,MAAA,IAAAwL,KAAA,IAAAA,SAAA,KAAAA,SAAY,IAAa,GAC5B,CAAAhI,CAAAA,MAAAA,EAAO,OAAAA,EAAAa,WAAA,EACR,OAAAkC,CAED,CAEA,IAAAkF,EAAO,IAAAF,EAAArJ,EAEH2B,CAAA,CAAW6H,GAAA,GAAAC,GAAY,IAAAzJ,EACrB2B,CAAA,CAAA8H,EAAW,EAAAjB,QAAA,GAMnB,SAAAlI,EAAAoJ,EAAA,EAAAH,EAAAjI,EAAAa,WAAA,CAAAmC,iBAAA,CAAAhD,EAAAa,WAAA,CAAAwH,iBAAA,CAAAJ,EAAAlF,MAAA/C,EAAAa,WAAA,CAAAyH,qBAAA,IAAApB,QAAA,KAAyBlH,MAAAA,EAAA,OAAAA,EAAAa,WAAA,CAG3B,EACS0H,EAAA,GAAA1J,EAAAZ,OAAA,MACF,EACH,GAAAkG,CAAS,CACTC,QAAAA,GAAA,EAAqB,CACrBC,oBAAoBiB,GAAAjB,EACpB,GAAArE,GAAA,GACAsG,YAAAA,EACAvG,cAAAA,EACAiG,UAAAA,EACAC,WAAAA,EACAjC,oBAAAA,EACA,GAAAoC,GAAc,GACd5C,aAAA,CAAA4C,MAAAA,EAAA,OAAAA,EAAA5C,YAAA,MACArG,QAAAA,EACAC,SAAAA,EACAvB,iBAAAA,EACAyI,oBAAAA,EACAC,kBAAAA,EACAkC,YAAAA,EACAC,aAAAA,EACAE,cAAAA,EACApC,mBAAAA,EACAE,oBAAAA,EACAC,eAAAA,EACF0C,kBAAAA,CACA,IAEEjD,EACApE,EACAD,EACAuG,EACAhB,EACAjB,EACA2B,EACAC,EACAG,EACApC,EACA7G,EACAC,EACAvB,EACAyI,EACAC,EACAkC,EACAC,EACAE,EACApC,EACAE,EACAC,EACD0C,EAGH,EAC6B,MAAQ,GAAA7I,EAAAgK,GAAA,EAAA5D,EAAA6D,QAAA,EAAAC,MAAAH,EAChCzD,SAAAA,CAGN,EAED,EAAgC,IAAAvG,EAAAqG,CAAA,iBAAAvK,CAAA,CAAAK,CAAA,CAAAH,CAAA,mBAAAoO,EAAApO,EAAA,OAAAqO,EAAArO,EAAA,OAAAsO,EAAAtO,EAAA,MCjRMuO,EAAAvO,EAAA,OAMY,IAChDwO,EAAc,GAAiB,CAE/B,IAAOzI,KAAAC,CAAA,KAAAqI,EAASpI,CAAA,UACd,GAAAmI,EAAUjI,QAAA,GAAAC,SAAC,CAAmB,mBAC9B,CACE,MADmBI,SACb,CACN,IAAAqD,EAAO,SAAA0E,EAAAE,CAAA,IACT,OAAA5E,CACA,EACA6E,YAAAJ,EAA2BvI,IAAA,CAC3BmD,qBAAS,GACXC,QAAAA,MAAAA,EAAAA,EAAAnG,QAAAgD,MAAAA,EAAA,OAAAA,EAAAoD,yBAAA,GAGF,CAAiCjJ,CAAAA,EAAA,EAAAqO,CAAA,iBAAA1O,CAAA,CAAAK,CAAA,CAAAH,CAAA,mBAAA2O,EAAA3O,EAAA,OAAA4O,EAAA5O,EAAA,MAAA6O,EAAA7O,EAAA,MAAA8O,EAAA9O,EAAA,OCjBS+O,EAAA/O,EAAA,OAcmC,IAC3EgP,EAAoB,CAAGxJ,EAAA2D,IAAA,CACvB,GAAM,CAAExD,WAAAA,CAAM,KAAYoJ,EAAKnJ,EAAA,IACzB,CAAEG,KAAAC,CAAW,KAAA8I,EAAyB7I,CAAA,IAE5C,CAAOgJ,UAAAA,CAAA,CAAAC,qBAAAA,CAAA,KAAAN,EAA4C9I,CAAA,UACjD,GAAA+I,EAAU/I,CAAA,qBAAAM,SACR,CACA,cACAZ,EACAyJ,EAAA5I,QAAA,GACD6I,EAAA7I,QAAA,GACD,CACO,MADcG,SACd,CAEL,IAAAhB,EAAM,MAAgB,CAIpB,IAACiB,EAAA,MAAAkI,EAAAQ,GAAA,CAAAC,mBAAA,CAAAzJ,EAAAsJ,EAAAC,EAAA,CAAc1J,EAEjB,EAEAiB,EAAM4I,WAAc,CAAA7J,EAAca,QAAa,IAC/C,IAAMC,EAAAG,EAAuB6I,YAAA,CAAAlI,GAAA,CAAA5B,EAAAa,QAAA,IACvBsF,EAAArF,MAAAA,EAAwB,OAAAA,EAAAP,IAAa,CAAIwJ,MAAC,CAAMC,UAAC,CAAAC,OAAY,CAE7D7D,EAAgCtF,MAAAA,EAAA,OAAAA,EAAAP,IAAA,CAAAwJ,MAAA,CAAAG,WAAA,CAAAD,OAAA,CAOxC,MANI,CACAhJ,cAAAA,EACAH,YAAAA,EACAqF,qBAAAA,EACFC,sBAAAA,CACA,CAEF,EACA1C,qBAAS,GACTC,QAAAA,MAAAA,EAAsBA,EAAAnG,QAAA,CAAAgD,MAAAA,EAAA,OAAAA,EAAAoD,yBAAA,GAAA5D,EAAA,CACtB6D,iBAAA,GACFsG,oBAAAnK,CACF,EAEA,CAAiCrF,CAAAA,EAAA,EAAA6O,CAAA,iBAAAlP,CAAA,CAAAK,CAAA,CAAAH,CAAA,eAAAA,EAAA8D,CAAA,CAAA3D,EAAA,sBAAAyP,CAAA,QAAAC,EAAA7P,EAAA,OC3DU8P,EAAA9P,EAAA,OAShB,IAAC+P,EAAA,CAAoBD,EAAAE,EAAkB,CAACF,EAAAG,EAAA,CAEnE,CAMEC,EAAA,SAAAC,CAAA,EAEA,IAAIC,EAAa3C,UAAWxL,MAAK,IAAAwL,KAAuB,IAAvBA,SAAgB,IAAmBA,SAAM,IAAA0C,CAAA,IACxEA,IAAAA,EAAUlO,MAAM,EAAAkO,CAAA,IAAAE,MAA8B,CAAAF,CAAA,KAC/C,2CAOC,GACAC,CAAU,IAAAC,MAAM,CAAAD,CAAA,MAAwBA,IAAAA,EAAArN,MAAA,IAAAuN,EAAAD,MAAA,CAAAF,CAAA,MAAAG,EAAAD,MAAA,CAAAF,CAAA,MAAAlO,MAAA,CACzC,qCAGD,GAAM,CAAAsO,EAAAC,EAAe,CAAAJ,EACfK,EAAeV,EAAYpN,QAAQ,CAAC4N,EAAOlK,QAAQ,IAErDqK,EAAgBX,EAAApN,QAAc,CAAA6N,EAAAnK,QAAA,cACzBqK,EACRP,EAGCM,EAAQ,CAAQD,EAAOD,EACxB,CAGCG,EAAQ,CAAQH,EAAOC,EACxB,CAGCD,EAAOlK,QAAA,KAAAyJ,EAAAa,EAAA,CAAC,CAAQH,EAAOD,EACxB,CAGCC,EAAOnK,QAAA,KAAAyJ,EAAAa,EAAA,CAAC,CAAQJ,EAAOC,EACxB,CAGCD,EAAOlK,QAAA,KAAAyJ,EAAAc,EAAA,CAAC,CAAQJ,EAAOD,EACxB,CAGCC,EAAOnK,QAAA,KAAAyJ,EAAAc,EAAA,CAAC,CAAQL,EAAOC,EACxB,CAGFL,CAzBC,EAgCAP,EAAA,SAAAO,CAAA,EAEA,IAAAC,EAAiB3C,UAAAxL,MAAA,IACfwL,KAAA,IAAAA,SAAA,IAAAA,SAAA,IAAA0C,CAAA,CAAC,CAAAI,EAAI,CAAAL,EAAA,CAAoC,IAAIL,EAAAxE,SAAS,CAAC8E,CAAY,CAAC,EAAE,CAAC/E,OAAO,EAC9E,IAAAyE,EAAAxE,SAAA,CAAA8E,CAAA,IAAA/E,OAAA,IAAwC,IAAIyE,EAAAxE,SAAS,CAAC+E,CAAW,CAAC,EAAE,CAAChF,OAAO,EAAE,IAAAyE,EAAAxE,SAAA,CAAA+E,CAAA,IAAAhF,OAAA,EAGhF,EACAyF,EAAOT,CAAA,IAAAhF,OAAA,GAAAmF,EAAAlK,QAAA,SACL,CACAwK,EAAgBT,CAAW,CAAC,EAAE,CAAGA,CAAW,CAAC,EAAE,CAChDS,EAAAT,CAAA,IAAAA,CAAA,IACF,iBAAAtQ,CAAA,CAAAK,CAAA,CAAAH,CAAA,mBAAA6P,EAAA7P,EAAA,OAAA8Q,EAAA9Q,EAAA,OAAA+Q,EAAA/Q,EAAA,OCrF0CgR,EAAAhR,EAAA,OASb,IAC5BiR,EAAc,KAEd,IAAOlL,KAAAC,CAAA,KAAA+K,EACL9K,CAAA,UAAO,GAAA6K,EAAApN,OAAA,MACL,EACAuL,UAAA,IAAAY,EAA0BxE,SAAA,EAAArF,MAAAA,EAAU,OAAAA,EAAAkL,oBAAc,GAAAF,EAAqCG,EAAA,EACzFjC,qBAAA,IAAAW,EAAAxE,SAAA,EAAArF,MAAAA,EAAA,OAAAA,EAAAoL,iCAAA,GAAAJ,EAAAK,EAAA,CACA,IAEErL,MAAAA,EAAA,OAAAA,EAAckL,oBAAA,CACflL,MAAAA,EAAA,OAAAA,EAAAoL,iCAAA,CAEL,CAEA,CAA8BjR,CAAAA,EAAA,EAAA8Q,CAAA,iBAAAnR,CAAA,CAAAK,CAAA,CAAAH,CAAA,eAAAA,EAAAiG,CAAA,CAAA9F,GAAAH,EAAA8D,CAAA,CAAA3D,EAAA,2BAAAmR,CAAA,QAAAC,EAAAvR,EAAA,OAAAwR,EAAAxR,EAAA,MAAAyR,EAAAzR,EAAAM,CAAA,CAAAkR,GAAAE,EAAA1R,EAAA,OCxB9B2R,EAAA3R,EAAA,OAM4C,IAAA4R,EAAAH,IAAA,IAAAI,QAAAC,GAAA,EAAA9R,EAAA+R,CAAA,OAAA/R,EAAA+R,CAAA,OAAA/R,EAAA+R,CAAA,OAAA/R,EAAA+R,CAAA,SAAAC,IAAA,CAAAhS,EAAAiS,IAAA,CAAAjS,EAAA,SAAAkS,kBAAA,CAAAC,QAAA,aAAyCC,IAAA,EAErF,GACEC,EAAA,IAC+B,GAAAd,EAAAtD,GAAA,EAAA0D,EAAA7L,CAAA,EAAAwM,YAC3B,GAAmB/H,SACjB,GAAAgH,EAAAtD,GAAA,EAAAyD,EAACa,CAAA,EAAAhI,SAAA,GAAAgH,EAAAtD,GAAA,EAAA2D,EAAA,KAIT,GAEA,IAAAN,EAAA,EAAwBnR,CAAAA,EAAA,QAAAkS,CAAA,iBAAAvS,CAAA,CAAAK,CAAA,CAAAH,CAAA,eAAAA,EAAA8D,CAAA,CAAA3D,EAAA,qBAAAqS,CAAA,sBAAAC,CAAA,QAAAC,EAAA1S,EAAA,MAAA2S,EAAAC,KAAAC,KAAA,upBAAAC,EAAA9S,EAAA,OAAA+S,EAAA/S,EAAA,MAAAgT,EAAAJ,KAAAC,KAAA,i+CAAAI,EAAAjT,EAAA,OAAAmF,EAAAnF,EAAA,OCJ6D,IACnFyS,EAAqB,SAAM,CAC3B,GAAM,EAAAS,EAAA,CAAe,SAAA/N,EAAYgO,EAAA,EAAAF,EAAAG,CAAA,CAAAhM,GAAA,uBACjCiM,EAAQX,EAAAY,EAAA,CAAAN,EAA+BD,CAAa,CACrD,QAAAG,MAAAA,EAAA,OAAAA,EAAAnN,IAAA,GAAAsN,EAAAtN,IAAA,EAAAhD,MAAA,CAAAC,QAEM,EACLwP,EAA2B,UAC3B,GAAM,EAAAU,EAAA,OAAoB,GAAA/N,EAAYgO,EAAA,EAAAF,EAAAG,CAAA,CAAAhM,GAAA,6BACtCmM,EAAQb,EAAAY,EAAA,CAAAX,EAAkBG,CAAA,CAC3B,OAAAI,MAAAA,EAAA,OAAAA,EAAAnN,IAAA,GAAAwN,CAAA,kBAAAC,CAAA,cAAAA,CAAAA,EAAAC,OAAA,CAAAb,KAAAC,KAAA,4YAAAW,CAAA,cAAAA,CAAAA,EAAAC,OAAA,CAAAb,KAAAC,KAAA,ikCAAA7S,CAAA,EAAAA,EAAA0T,CAAA,mEAAA1T,EAAAA,EAAA2T,CAAA,UAAAC,KAAA5T,EAAA0T,CAAA","sources":["webpack://_N_E/?8831","webpack://_N_E/./src/components/home/use-token-mint-addresses.ts","webpack://_N_E/./src/components/limit-order/hooks/use-fetch-trader-info.tsx","webpack://_N_E/./src/components/limit-order/context.tsx","webpack://_N_E/./src/components/limit-order/hooks/use-fetch-all-markets.tsx","webpack://_N_E/./src/components/limit-order/hooks/use-fetch-market-info.tsx","webpack://_N_E/./src/components/limit-order/utils.ts","webpack://_N_E/./src/hooks/use-orderbook-ids.ts","webpack://_N_E/./src/pages/limit/[pair].nemo.tsx","webpack://_N_E/./src/utils/apis/orderbook.ts","webpack://_N_E/"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/limit/[pair]\",\n function () {\n return require(\"private-next-pages/limit/[pair].nemo.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/limit/[pair]\"])\n });\n }\n ","import isEqual from 'lodash/isEqual'\nimport { useRouter } from 'next/router'\nimport { Dispatch, SetStateAction, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport useTokens from '@/hooks/use-tokens'\nimport type { APITokenInfo } from '@/utils/apis/helper'\n\nconst PAIR_SEPARATOR = '_'\n\nconst useTokenMintAddresses = (initMintAddresses: [string, string]) => {\n const router = useRouter()\n const { isLoading, tokenList } = useTokens()\n\n const [defaultMintAddresses, setDefaultMintAddresses] = useState(initMintAddresses)\n useEffect(() => {\n setDefaultMintAddresses((defaultMintAddresses) =>\n isEqual(defaultMintAddresses, initMintAddresses) ? defaultMintAddresses : initMintAddresses,\n )\n }, [initMintAddresses])\n\n const [mintAddresses, setMintAddresses] = useState<[string, string]>(['', ''])\n\n useEffect(() => {\n if (isLoading || !tokenList) return\n\n const queryPair = String(window.location.pathname.split('/').pop()).toLowerCase()\n const pairs = queryPair.split(PAIR_SEPARATOR)\n\n if (pairs.length < 1 || pairs.length > 2) return\n\n let foundTokenIn: APITokenInfo | undefined\n let foundTokenOut: APITokenInfo | undefined\n\n if (pairs.length === 1) {\n // if only one token in the query string, treat it as tokenOut\n foundTokenOut = tokenList.find((t) => t.token_symbol.toLowerCase() === pairs[0])\n\n if (!foundTokenOut) return\n } else {\n foundTokenIn = tokenList.find((t) => t.token_symbol.toLowerCase() === pairs[0])\n foundTokenOut = tokenList.find((t) => t.token_symbol.toLowerCase() === pairs[1])\n\n if (!foundTokenIn || !foundTokenOut) return\n }\n\n setMintAddresses((mintAddresses) => {\n const [prevInAddr, prevOutAddr] = mintAddresses\n const newDefaultInAddr = foundTokenIn?.coin_address || prevInAddr\n const newDefaultOutAddr = foundTokenOut?.coin_address || prevOutAddr\n\n const newAddr: [string, string] = newDefaultInAddr === newDefaultOutAddr\n ? ['', newDefaultOutAddr]\n : [newDefaultInAddr, newDefaultOutAddr]\n return isEqual(newAddr, mintAddresses) ? mintAddresses : newAddr\n })\n }, [isLoading, tokenList])\n\n useEffect(() => {\n if (!['/swap', '/swap/[pair]', '/limit/[pair]'].includes(router.pathname)) return\n if (isLoading || !tokenList) return\n\n const tokenIn = tokenList.find((t) => t.coin_address === mintAddresses[0])\n const tokenOut = tokenList.find((t) => t.coin_address === mintAddresses[1])\n\n if (tokenIn && !tokenOut) return\n\n const newPairQuery = [tokenIn?.token_symbol, tokenOut?.token_symbol]\n .filter(Boolean)\n .join(PAIR_SEPARATOR)\n\n if (!newPairQuery) return\n\n const searchParams = window.location.search\n const pathname = router.pathname === '/swap' ? '/swap/[pair]' : router.pathname\n\n window.history.replaceState({}, '', `/${router.locale}${pathname.replace('[pair]', newPairQuery)}${searchParams}`)\n }, [isLoading, mintAddresses, router, tokenList])\n\n const finalMintAddresses = useMemo<[string, string]>(\n () => mintAddresses[0] || mintAddresses[1] ? mintAddresses : defaultMintAddresses,\n [defaultMintAddresses, mintAddresses],\n )\n\n const handleSetMintAddresses = useCallback>>(\n (updater) => {\n setMintAddresses(typeof updater === 'function' ? updater(finalMintAddresses) : updater)\n },\n [finalMintAddresses],\n )\n\n return {\n mintAddresses: finalMintAddresses,\n setMintAddresses: handleSetMintAddresses,\n }\n}\n\nexport default useTokenMintAddresses\n","import { BN } from '@project-serum/anchor'\nimport { useRollbarPerson } from '@rollbar/react'\nimport { PublicKey } from '@solana/web3.js'\nimport {\n getUiOrderSequenceNumber,\n Side,\n toNum,\n} from '@trathailoi/phoenix-orderbook-sdk'\nimport { useQuery } from 'react-query'\n\nimport useNemoWallet from '@/hooks/use-nemo-wallet'\nimport { useSettings } from '@/hooks/use-settings'\nimport { useConnection } from '@/wallet/adapter'\n\nimport { fromOrderSequenceNumberToOrderSide } from '../helpers'\nimport { MyOpenOrders } from '../types'\nimport { MarketInfoQueryResult } from './use-fetch-market-info'\n\nconst useFetchTraderInfo = ({\n marketAddress,\n marketInfo,\n}: {\n marketAddress?: PublicKey,\n marketInfo?: MarketInfoQueryResult,\n}) => {\n const { connection } = useConnection()\n const { publicKey } = useNemoWallet()\n const { data: settingsData } = useSettings()\n\n const result = useQuery({\n queryKey: [\n 'traderInfo',\n marketAddress?.toBase58(),\n publicKey?.toBase58(),\n marketInfo?.marketState?.getMarketSequenceNumber(),\n ],\n queryFn: async () => {\n const {\n phoenixClient,\n marketState,\n } = marketInfo || {}\n\n if (\n !marketAddress ||\n !phoenixClient ||\n !marketState?.data ||\n !publicKey\n ) return\n\n await marketState.reloadFromNetwork(connection)\n\n const newMyOpenOrders: MyOpenOrders[] = []\n const traderBaseTokenAta = marketState.getBaseAccountKey(publicKey)\n const traderQuoteTokenAta = marketState.getQuoteAccountKey(publicKey)\n const traderAccountAddress = phoenixClient.getSeatKey(publicKey, marketAddress.toBase58())\n console.log('traderAccountAddress', traderAccountAddress?.toBase58())\n const traderState = marketState.data.traders.get(publicKey.toBase58())\n if (traderState) {\n const traderIndex = marketState.data.traderPubkeyToTraderIndex.get(publicKey.toBase58())\n const slot = phoenixClient.clock.slot\n const time = phoenixClient.clock.unixTimestamp\n\n for (const [orderId, order] of [...marketState.data.asks, ...marketState.data.bids]) {\n if (toNum(order.traderIndex) === traderIndex) {\n const timeRemaining =\n (order.lastValidSlot !== 0 && order.lastValidSlot < slot) ||\n (order.lastValidUnixTimestampInSeconds !== 0 &&\n order.lastValidUnixTimestampInSeconds < (time as BN))\n ? '∞'\n : (order.lastValidUnixTimestampInSeconds as BN)\n .sub(time as BN)\n .add(new BN(1))\n .toString()\n\n const orderSequenceNumber = getUiOrderSequenceNumber(orderId).toString()\n const price = phoenixClient.ticksToFloatPrice(\n toNum(orderId.priceInTicks),\n marketAddress.toBase58(),\n )\n const size = phoenixClient.baseAtomsToRawBaseUnits(\n phoenixClient.baseLotsToBaseAtoms(\n toNum(order.numBaseLots),\n marketAddress.toBase58(),\n ),\n marketAddress.toBase58(),\n )\n const side = fromOrderSequenceNumberToOrderSide(orderId.orderSequenceNumber)\n console.log(side === Side.Ask ? 'ASK' : 'BID', orderSequenceNumber, price, size, timeRemaining)\n newMyOpenOrders.push({\n order,\n orderId,\n slot,\n time,\n side,\n orderSequenceNumber,\n price,\n size,\n })\n }\n }\n } else {\n console.log('you have no trader account yet !!!')\n }\n\n return {\n traderState,\n traderAccountAddress,\n traderBaseTokenAta,\n traderQuoteTokenAta,\n myOpenOrders: newMyOpenOrders,\n }\n },\n refetchOnWindowFocus: false,\n enabled: Boolean(\n settingsData?.orderbook_feature_enabled\n && publicKey\n && marketInfo,\n ),\n keepPreviousData: true,\n })\n\n useRollbarPerson({\n wallet_address: publicKey?.toBase58() || 'anonymous',\n orderbook_trader_address: result.data?.traderAccountAddress?.toBase58() || 'anonymous',\n })\n\n return {\n ...result,\n isTraderInfoLoading: result.isLoading || result.isFetching,\n }\n}\n\nexport default useFetchTraderInfo\n","import { PublicKey } from '@solana/web3.js'\nimport { UiLadderLevel } from '@trathailoi/phoenix-orderbook-sdk'\nimport Decimal from 'decimal.js'\nimport isEqual from 'lodash/isEqual'\nimport { createContext, useCallback, useEffect, useMemo } from 'react'\n\nimport useTokenMintAddresses from '@/components/home/use-token-mint-addresses'\nimport { useTokens } from '@/hooks/use-tokens'\nimport { toDecimalSafe } from '@/utils/numeric'\n\nimport useFetchAllMarkets from './hooks/use-fetch-all-markets'\nimport useFetchMarketInfo from './hooks/use-fetch-market-info'\nimport useFetchTraderInfo from './hooks/use-fetch-trader-info'\nimport { LimitOrderContextType } from './types'\nimport { orderTokenInfosByUiQuote } from './utils'\n\nconst initContextState: LimitOrderContextType = {\n markets: [],\n myOpenOrders: [],\n isMarketInfoLoading: false,\n isTraderInfoLoading: false,\n switchMintAddresses: () => null,\n setMintAddresses: () => null,\n shouldInvertPrice: false,\n normalizeBaseUnits: () => undefined,\n normalizeQuoteUnits: () => undefined,\n normalizePrice: () => 0,\n}\n\nconst LimitOrderContext = createContext(initContextState)\n\nexport const LimitOrderProvider = ({ children }: HocProps) => {\n const { mintAddresses, setMintAddresses } = useTokenMintAddresses(['', ''])\n\n const { tokenListMap, getTokenInfo } = useTokens(true)\n\n const [inputMintAddress, outputMintAddress] = useMemo(() => mintAddresses, [mintAddresses])\n const [tokenIn, tokenOut] = useMemo(() => [\n inputMintAddress ? getTokenInfo(inputMintAddress) : undefined,\n outputMintAddress ? getTokenInfo(outputMintAddress) : undefined,\n ], [getTokenInfo, inputMintAddress, outputMintAddress])\n\n const switchMintAddresses = useCallback(() => {\n setMintAddresses(([a, b]) => [b, a])\n }, [setMintAddresses])\n\n const {\n data: markets,\n isFetching: isMarketsFetching,\n } = useFetchAllMarkets()\n\n const marketAddress = useMemo(() => {\n if (!markets) return\n\n const market = markets.find(\n ({\n base_token_mint_address,\n quote_token_mint_address,\n }) => isEqual(\n [base_token_mint_address, quote_token_mint_address].sort(),\n [tokenIn?.address, tokenOut?.address].sort(),\n ),\n ) || markets[0]\n\n return new PublicKey(market.market_address)\n }, [\n markets,\n tokenIn?.address,\n tokenOut?.address,\n ])\n\n const {\n data: marketInfo,\n isLoading: isMarketInfoLoading,\n isPreviousData: isMarketInfoStale,\n } = useFetchMarketInfo(marketAddress)\n\n const [baseToken, quoteToken] = useMemo(() => {\n if (isMarketInfoStale) {\n return [\n tokenIn && tokenListMap.get(tokenIn.address),\n tokenOut && tokenListMap.get(tokenOut.address),\n ]\n }\n\n return [\n marketInfo?.baseTokenMintAddress && tokenListMap.get(marketInfo.baseTokenMintAddress.toBase58()),\n marketInfo?.quoteTokenMintAddress && tokenListMap.get(marketInfo.quoteTokenMintAddress.toBase58()),\n ]\n }, [isMarketInfoStale, marketInfo, tokenIn, tokenListMap, tokenOut])\n\n const {\n data: traderInfo,\n isTraderInfoLoading,\n // error: traderInfoError,\n } = useFetchTraderInfo({ marketAddress, marketInfo })\n\n const priceLadder = useMemo(() => {\n if (isMarketInfoStale || !marketInfo?.marketState) return\n\n const priceLadder = marketInfo.marketState.getUiLadder()\n priceLadder.asks.sort((a, b) => b.price - a.price)\n return priceLadder\n }, [\n isMarketInfoStale,\n marketInfo?.marketState,\n ])\n\n useEffect(() => {\n /**\n * Double check again if the tokenIn and tokenOut that get from the URL is entered by user manually\n * IF the pair is not available, reset to the default of tokenIn and tokenOut\n */\n if (\n !isMarketInfoStale &&\n marketInfo?.baseTokenMintAddress &&\n marketInfo?.quoteTokenMintAddress &&\n tokenIn &&\n tokenOut\n ) {\n const baseTokenMintAddress = marketInfo.baseTokenMintAddress.toBase58()\n const quoteTokenMintAddress = marketInfo.quoteTokenMintAddress.toBase58()\n const isMatched = isEqual(\n [baseTokenMintAddress, quoteTokenMintAddress].sort(),\n [tokenIn.address, tokenOut.address].sort(),\n )\n if (!isMatched) {\n setMintAddresses([\n baseTokenMintAddress,\n quoteTokenMintAddress,\n ])\n }\n }\n }, [\n isMarketInfoStale,\n marketInfo?.baseTokenMintAddress,\n marketInfo?.quoteTokenMintAddress,\n tokenIn,\n tokenOut,\n setMintAddresses,\n ])\n\n const [uiBaseToken, uiQuoteToken] = useMemo(\n () =>\n baseToken && quoteToken\n ? orderTokenInfosByUiQuote([baseToken, quoteToken])\n : [baseToken, quoteToken],\n [baseToken, quoteToken],\n )\n const shouldInvertPrice = uiQuoteToken?.address === baseToken?.address\n\n const uiPriceLadder = useMemo(() => {\n const invertPriceAndQuantity = (levels: UiLadderLevel[]) =>\n levels\n .map(({ price, quantity }) => ({\n price: new Decimal(price).pow(-1).toNumber(),\n quantity: new Decimal(price).mul(quantity).toNumber(),\n }))\n .sort((a, b) => b.price - a.price)\n\n const invertedLadder = priceLadder && {\n asks: invertPriceAndQuantity(priceLadder.bids),\n bids: invertPriceAndQuantity(priceLadder.asks),\n }\n return shouldInvertPrice ? invertedLadder : priceLadder\n }, [priceLadder, shouldInvertPrice])\n\n const minimumBaseAmount = useMemo(\n () =>\n marketInfo?.marketState &&\n marketInfo.marketState.baseLotsToRawBaseUnits(\n marketInfo.marketState.rawBaseUnitsToBaseLotsRoundedUp(Number.EPSILON),\n ),\n [marketInfo?.marketState],\n )\n\n const normalizeBaseUnits = useCallback(\n (baseUnits: number) =>\n marketInfo?.marketState &&\n marketInfo.marketState.baseLotsToRawBaseUnits(\n marketInfo.marketState.rawBaseUnitsToBaseLotsRoundedDown(baseUnits),\n ),\n [marketInfo?.marketState],\n )\n\n const normalizeQuoteUnits = useCallback(\n (quoteUnits: number) =>\n marketInfo?.marketState &&\n marketInfo.marketState.quoteLotsToQuoteUnits(\n marketInfo.marketState.quoteUnitsToQuoteLots(quoteUnits),\n ),\n [marketInfo?.marketState],\n )\n\n const normalizePrice = useCallback(\n (price: number, inverted = false) => {\n if (!marketInfo?.marketState) {\n return price\n }\n\n const op = (x: Decimal.Value) => (inverted ? Decimal.div(1, x) : new Decimal(x)).toNumber()\n\n return toDecimalSafe(\n op(\n marketInfo.marketState.ticksToFloatPrice(\n marketInfo.marketState.floatPriceToTicks(op(price)),\n ),\n ),\n marketInfo.marketState.getPriceDecimalPlaces(),\n ).toNumber()\n },\n [marketInfo?.marketState],\n )\n\n const ctxValue = useMemo(\n () => ({\n ...initContextState,\n markets: markets || [],\n isMarketInfoLoading: isMarketsFetching || isMarketInfoLoading,\n ...(marketInfo || {}),\n priceLadder,\n marketAddress,\n baseToken,\n quoteToken,\n isTraderInfoLoading,\n ...(traderInfo || {}),\n myOpenOrders: traderInfo?.myOpenOrders || [],\n tokenIn,\n tokenOut,\n setMintAddresses,\n switchMintAddresses,\n shouldInvertPrice,\n uiBaseToken,\n uiQuoteToken,\n uiPriceLadder,\n normalizeBaseUnits,\n normalizeQuoteUnits,\n normalizePrice,\n minimumBaseAmount,\n }),\n [\n markets,\n marketInfo,\n marketAddress,\n priceLadder,\n isMarketsFetching,\n isMarketInfoLoading,\n baseToken,\n quoteToken,\n traderInfo,\n isTraderInfoLoading,\n tokenIn,\n tokenOut,\n setMintAddresses,\n switchMintAddresses,\n shouldInvertPrice,\n uiBaseToken,\n uiQuoteToken,\n uiPriceLadder,\n normalizeBaseUnits,\n normalizeQuoteUnits,\n normalizePrice,\n minimumBaseAmount,\n ],\n )\n\n return (\n \n {children}\n \n )\n}\n\nexport default LimitOrderContext\n","import { useQuery } from 'react-query'\n\nimport { useSettings } from '@/hooks/use-settings'\nimport testnetMarkets from '@/root/cypress/fixtures/orderbook-markets.json'\nimport { fetchOrderbookMarkets } from '@/utils/apis/orderbook'\n\nconst useFetchAllMarkets = (enabled?: boolean) => {\n const { data: settingsData } = useSettings()\n\n return useQuery({\n queryKey: ['orderbook-market'],\n queryFn: async () => {\n const markets = await fetchOrderbookMarkets()\n return markets\n },\n initialData: testnetMarkets.data,\n refetchOnWindowFocus: false,\n enabled: enabled ?? Boolean(settingsData?.orderbook_feature_enabled),\n })\n}\n\nexport default useFetchAllMarkets\n","import { PublicKey } from '@solana/web3.js'\nimport {\n Client,\n MarketState,\n} from '@trathailoi/phoenix-orderbook-sdk'\n\nimport useOrderbookIds from '@/hooks/use-orderbook-ids'\nimport useQueryWithSubscription from '@/hooks/use-query-with-subscription'\nimport { useSettings } from '@/hooks/use-settings'\nimport { useConnection } from '@/wallet/adapter'\n\nexport type MarketInfoQueryResult = {\n phoenixClient?: Client,\n marketState?: MarketState,\n baseTokenMintAddress?: PublicKey,\n quoteTokenMintAddress?: PublicKey,\n}\n\nconst useFetchMarketInfo = (marketAddress?: PublicKey, enabled?: boolean) => {\n const { connection } = useConnection()\n const { data: settingsData } = useSettings()\n const { programId, seatManagerProgramId } = useOrderbookIds()\n\n return useQueryWithSubscription('onAccountChange', {\n queryKey: [\n 'marketState',\n marketAddress,\n programId.toBase58(),\n seatManagerProgramId.toBase58(),\n ],\n queryFn: async () => {\n if (!marketAddress) return\n\n const phoenixClient = await Client.createWithoutConfig(\n connection,\n programId,\n seatManagerProgramId,\n [marketAddress],\n )\n phoenixClient.printLadder(marketAddress.toBase58())\n\n const marketState = phoenixClient.marketStates.get(marketAddress.toBase58())\n const baseTokenMintAddress = marketState?.data.header.baseParams.mintKey\n const quoteTokenMintAddress = marketState?.data.header.quoteParams.mintKey\n\n const result: MarketInfoQueryResult = {\n phoenixClient,\n marketState,\n baseTokenMintAddress,\n quoteTokenMintAddress,\n }\n return result\n },\n refetchOnWindowFocus: false,\n enabled: enabled ?? Boolean(settingsData?.orderbook_feature_enabled && marketAddress),\n keepPreviousData: true,\n subscriptionOptions: marketAddress,\n })\n}\n\nexport default useFetchMarketInfo\n","import type { TokenInfo } from '@renec-foundation/rpl-token-registry'\nimport { PublicKey } from '@solana/web3.js'\n\nimport {\n RENEC_MINT_ADDRESS,\n RENGN_MINT_ADDRESS,\n REUSD_MINT_ADDRESS,\n REVND_MINT_ADDRESS,\n} from '@/hooks/use-tokens'\n\nexport const FIAT_TOKENS = [REVND_MINT_ADDRESS, RENGN_MINT_ADDRESS]\n\n/**\n * Returns the ordered token pair `[base, quote]` (`1 base = X quote`) to be\n * used for rate displaying purposes.\n */\nexport const orderTokensByUiQuote = (\n defaultOrder: [PublicKey, PublicKey],\n currentPair = defaultOrder,\n): [PublicKey, PublicKey] => {\n if (defaultOrder.length !== 2 || defaultOrder[0].equals(defaultOrder[1])) {\n throw new Error('Invalid default order pair.')\n }\n\n if (\n currentPair[0].equals(currentPair[1]) ||\n currentPair.filter(\n (mint) => mint.equals(defaultOrder[0]) || mint.equals(defaultOrder[1]),\n ).length !== 2\n ) {\n throw new Error('Invalid current pair.')\n }\n\n const [token0, token1] = currentPair\n const isToken0Fiat = FIAT_TOKENS.includes(token0.toBase58())\n const isToken1Fiat = FIAT_TOKENS.includes(token1.toBase58())\n\n if (isToken0Fiat && isToken1Fiat) {\n return defaultOrder\n }\n\n if (isToken0Fiat) {\n return [token1, token0]\n }\n\n if (isToken1Fiat) {\n return [token0, token1]\n }\n\n if (token0.toBase58() === REUSD_MINT_ADDRESS) {\n return [token1, token0]\n }\n\n if (token1.toBase58() === REUSD_MINT_ADDRESS) {\n return [token0, token1]\n }\n\n if (token0.toBase58() === RENEC_MINT_ADDRESS) {\n return [token1, token0]\n }\n\n if (token1.toBase58() === RENEC_MINT_ADDRESS) {\n return [token0, token1]\n }\n\n return defaultOrder\n}\n\n/**\n * Wrapper of {@link orderTokensByUiQuote} for {@link TokenInfo}.\n */\nexport const orderTokenInfosByUiQuote = (\n defaultOrder: [T, T],\n currentPair = defaultOrder,\n): [T, T] => {\n const [token0] = orderTokensByUiQuote(\n [new PublicKey(defaultOrder[0].address), new PublicKey(defaultOrder[1].address)],\n [new PublicKey(currentPair[0].address), new PublicKey(currentPair[1].address)],\n )\n\n const isFirstToken0 = currentPair[0].address === token0.toBase58()\n return [\n isFirstToken0 ? currentPair[0] : currentPair[1],\n isFirstToken0 ? currentPair[1] : currentPair[0],\n ]\n}\n","import { PublicKey } from '@solana/web3.js'\nimport { useMemo } from 'react'\n\nimport { useSettings } from '@/hooks/use-settings'\nimport {\n DEFAULT_ORDERBOOK_PROGRAM_ID,\n DEFAULT_ORDERBOOK_SEAT_MANAGER_PROGRAM_ID,\n} from '@/utils/helpers'\n\nconst useOrderbookIds = () => {\n const { data: settingsData } = useSettings()\n\n return useMemo(\n () => ({\n programId: new PublicKey(settingsData?.orderbook_program_id || DEFAULT_ORDERBOOK_PROGRAM_ID),\n seatManagerProgramId: new PublicKey(settingsData?.orderbook_seat_manager_program_id || DEFAULT_ORDERBOOK_SEAT_MANAGER_PROGRAM_ID),\n }),\n [\n settingsData?.orderbook_program_id,\n settingsData?.orderbook_seat_manager_program_id,\n ],\n )\n}\n\nexport default useOrderbookIds\n","import dynamic from 'next/dynamic'\n\nimport { LimitOrderProvider } from '@/components/limit-order/context'\nimport { MainLayout } from '@/layouts/MainLayout'\nimport gssp from '@/utils/gssp'\n\nconst LimitOrderPage = dynamic(() => import('@/components/limit-order'), { ssr: false })\n\nconst OrderBook = () => {\n return (\n \n \n \n \n \n )\n}\n\nexport default OrderBook\n\nexport const getServerSideProps = gssp()\n","import { isMainnet } from '@/constants/index'\nimport mainnetLookupTables from '@/root/cypress/fixtures/orderbook-lookup-tables.mainnet.json'\nimport testnetLookupTables from '@/root/cypress/fixtures/orderbook-lookup-tables.testnet.json'\nimport testnetMarkets from '@/root/cypress/fixtures/orderbook-markets.json'\nimport mainnetMarkets from '@/root/cypress/fixtures/orderbook-markets.mainnet.json'\nimport { api } from '@/utils/apis/index'\nimport { toResultAsync } from '@/utils/helpers'\n\nexport type OrderbookMarketMetaData = {\n market_address: string\n base_token_mint_address: string\n quote_token_mint_address: string\n}\n\nexport const fetchOrderbookMarkets = async (): Promise => {\n const [, response] = await toResultAsync(api.get('orderbook/markets'))\n const fixedMarkets = isMainnet ? mainnetMarkets : testnetMarkets\n return (response?.data || fixedMarkets.data).filter(Boolean)\n}\n\nexport const fetchOrderbookLookupTables = async (): Promise> => {\n const [, response] = await toResultAsync(api.get('orderbook/lookup-tables'))\n const fixedLookupTables = isMainnet ? mainnetLookupTables : testnetLookupTables\n return (response?.data || fixedLookupTables)\n}\n","(self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || []).push([[1983],{\n\n/***/ 80943:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/limit/[pair]\",\n function () {\n return __webpack_require__(20356);\n }\n ]);\n if(false) {}\n \n\n/***/ }),\n\n/***/ 52988:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18446);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11163);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67294);\n/* harmony import */ var _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28309);\n\n\n\n\nconst PAIR_SEPARATOR = \"_\";\nconst useTokenMintAddresses = (initMintAddresses)=>{\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_1__.useRouter)();\n const { isLoading , tokenList } = (0,_hooks_use_tokens__WEBPACK_IMPORTED_MODULE_3__/* [\"default\"] */ .Co)();\n const [defaultMintAddresses, setDefaultMintAddresses] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(initMintAddresses);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n setDefaultMintAddresses((defaultMintAddresses)=>lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(defaultMintAddresses, initMintAddresses) ? defaultMintAddresses : initMintAddresses);\n }, [\n initMintAddresses\n ]);\n const [mintAddresses, setMintAddresses] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([\n \"\",\n \"\"\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n if (isLoading || !tokenList) return;\n const queryPair = String(window.location.pathname.split(\"/\").pop()).toLowerCase();\n const pairs = queryPair.split(PAIR_SEPARATOR);\n if (pairs.length < 1 || pairs.length > 2) return;\n let foundTokenIn;\n let foundTokenOut;\n if (pairs.length === 1) {\n // if only one token in the query string, treat it as tokenOut\n foundTokenOut = tokenList.find((t)=>t.token_symbol.toLowerCase() === pairs[0]);\n if (!foundTokenOut) return;\n } else {\n foundTokenIn = tokenList.find((t)=>t.token_symbol.toLowerCase() === pairs[0]);\n foundTokenOut = tokenList.find((t)=>t.token_symbol.toLowerCase() === pairs[1]);\n if (!foundTokenIn || !foundTokenOut) return;\n }\n setMintAddresses((mintAddresses)=>{\n const [prevInAddr, prevOutAddr] = mintAddresses;\n const newDefaultInAddr = (foundTokenIn === null || foundTokenIn === void 0 ? void 0 : foundTokenIn.coin_address) || prevInAddr;\n const newDefaultOutAddr = (foundTokenOut === null || foundTokenOut === void 0 ? void 0 : foundTokenOut.coin_address) || prevOutAddr;\n const newAddr = newDefaultInAddr === newDefaultOutAddr ? [\n \"\",\n newDefaultOutAddr\n ] : [\n newDefaultInAddr,\n newDefaultOutAddr\n ];\n return lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default()(newAddr, mintAddresses) ? mintAddresses : newAddr;\n });\n }, [\n isLoading,\n tokenList\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n if (![\n \"/swap\",\n \"/swap/[pair]\",\n \"/limit/[pair]\"\n ].includes(router.pathname)) return;\n if (isLoading || !tokenList) return;\n const tokenIn = tokenList.find((t)=>t.coin_address === mintAddresses[0]);\n const tokenOut = tokenList.find((t)=>t.coin_address === mintAddresses[1]);\n if (tokenIn && !tokenOut) return;\n const newPairQuery = [\n tokenIn === null || tokenIn === void 0 ? void 0 : tokenIn.token_symbol,\n tokenOut === null || tokenOut === void 0 ? void 0 : tokenOut.token_symbol\n ].filter(Boolean).join(PAIR_SEPARATOR);\n if (!newPairQuery) return;\n const searchParams = window.location.search;\n const pathname = router.pathname === \"/swap\" ? \"/swap/[pair]\" : router.pathname;\n window.history.replaceState({}, \"\", \"/\".concat(router.locale).concat(pathname.replace(\"[pair]\", newPairQuery)).concat(searchParams));\n }, [\n isLoading,\n mintAddresses,\n router,\n tokenList\n ]);\n const finalMintAddresses = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>mintAddresses[0] || mintAddresses[1] ? mintAddresses : defaultMintAddresses, [\n defaultMintAddresses,\n mintAddresses\n ]);\n const handleSetMintAddresses = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((updater)=>{\n setMintAddresses(typeof updater === \"function\" ? updater(finalMintAddresses) : updater);\n }, [\n finalMintAddresses\n ]);\n return {\n mintAddresses: finalMintAddresses,\n setMintAddresses: handleSetMintAddresses\n };\n};\n/* harmony default export */ __webpack_exports__[\"Z\"] = (useTokenMintAddresses);\n\n\n/***/ }),\n\n/***/ 97527:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"v\": function() { return /* binding */ LimitOrderProvider; },\n \"Z\": function() { return /* binding */ context; }\n});\n\n// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js\nvar jsx_runtime = __webpack_require__(85893);\n// EXTERNAL MODULE: ./node_modules/@solana/web3.js/lib/index.browser.esm.js + 3 modules\nvar index_browser_esm = __webpack_require__(27632);\n// EXTERNAL MODULE: ./node_modules/decimal.js/decimal.mjs\nvar decimal = __webpack_require__(90482);\n// EXTERNAL MODULE: ./node_modules/lodash/isEqual.js\nvar isEqual = __webpack_require__(18446);\nvar isEqual_default = /*#__PURE__*/__webpack_require__.n(isEqual);\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(67294);\n// EXTERNAL MODULE: ./src/components/home/use-token-mint-addresses.ts\nvar use_token_mint_addresses = __webpack_require__(52988);\n// EXTERNAL MODULE: ./src/hooks/use-tokens/index.ts + 1 modules\nvar use_tokens = __webpack_require__(28309);\n// EXTERNAL MODULE: ./src/utils/numeric.ts\nvar numeric = __webpack_require__(14847);\n// EXTERNAL MODULE: ./src/components/limit-order/hooks/use-fetch-all-markets.tsx\nvar use_fetch_all_markets = __webpack_require__(98638);\n// EXTERNAL MODULE: ./src/components/limit-order/hooks/use-fetch-market-info.tsx\nvar use_fetch_market_info = __webpack_require__(79868);\n// EXTERNAL MODULE: ./node_modules/@project-serum/anchor/dist/browser/index.js\nvar browser = __webpack_require__(94758);\n// EXTERNAL MODULE: ./node_modules/@rollbar/react/dist/useRollbarPerson.js + 1 modules\nvar useRollbarPerson = __webpack_require__(49559);\n// EXTERNAL MODULE: ./node_modules/@trathailoi/phoenix-orderbook-sdk/dist/index.js\nvar dist = __webpack_require__(86439);\n// EXTERNAL MODULE: ./node_modules/react-query/es/index.js\nvar es = __webpack_require__(88767);\n// EXTERNAL MODULE: ./src/hooks/use-nemo-wallet.ts\nvar use_nemo_wallet = __webpack_require__(6200);\n// EXTERNAL MODULE: ./src/hooks/use-settings.ts + 1 modules\nvar use_settings = __webpack_require__(49472);\n// EXTERNAL MODULE: ./src/wallet/adapter.ts + 1 modules\nvar adapter = __webpack_require__(33618);\n// EXTERNAL MODULE: ./src/components/limit-order/helpers.ts\nvar helpers = __webpack_require__(56817);\n;// CONCATENATED MODULE: ./src/components/limit-order/hooks/use-fetch-trader-info.tsx\n\n\n\n\n\n\n\n\nconst useFetchTraderInfo = (param)=>{\n let { marketAddress , marketInfo } = param;\n var _marketInfo_marketState, _result_data, _result_data_traderAccountAddress;\n const { connection } = (0,adapter/* useConnection */.Rc)();\n const { publicKey } = (0,use_nemo_wallet/* default */.Z)();\n const { data: settingsData } = (0,use_settings/* useSettings */.r)();\n const result = (0,es.useQuery)({\n queryKey: [\n \"traderInfo\",\n marketAddress === null || marketAddress === void 0 ? void 0 : marketAddress.toBase58(),\n publicKey === null || publicKey === void 0 ? void 0 : publicKey.toBase58(),\n marketInfo === null || marketInfo === void 0 ? void 0 : (_marketInfo_marketState = marketInfo.marketState) === null || _marketInfo_marketState === void 0 ? void 0 : _marketInfo_marketState.getMarketSequenceNumber()\n ],\n queryFn: async ()=>{\n const { phoenixClient , marketState } = marketInfo || {};\n if (!marketAddress || !phoenixClient || !(marketState === null || marketState === void 0 ? void 0 : marketState.data) || !publicKey) return;\n await marketState.reloadFromNetwork(connection);\n const newMyOpenOrders = [];\n const traderBaseTokenAta = marketState.getBaseAccountKey(publicKey);\n const traderQuoteTokenAta = marketState.getQuoteAccountKey(publicKey);\n const traderAccountAddress = phoenixClient.getSeatKey(publicKey, marketAddress.toBase58());\n ;\n const traderState = marketState.data.traders.get(publicKey.toBase58());\n if (traderState) {\n const traderIndex = marketState.data.traderPubkeyToTraderIndex.get(publicKey.toBase58());\n const slot = phoenixClient.clock.slot;\n const time = phoenixClient.clock.unixTimestamp;\n for (const [orderId, order] of [\n ...marketState.data.asks,\n ...marketState.data.bids\n ]){\n if ((0,dist/* toNum */.leg)(order.traderIndex) === traderIndex) {\n const timeRemaining = order.lastValidSlot !== 0 && order.lastValidSlot < slot || order.lastValidUnixTimestampInSeconds !== 0 && order.lastValidUnixTimestampInSeconds < time ? \"∞\" : order.lastValidUnixTimestampInSeconds.sub(time).add(new browser.BN(1)).toString();\n const orderSequenceNumber = (0,dist/* getUiOrderSequenceNumber */.JLN)(orderId).toString();\n const price = phoenixClient.ticksToFloatPrice((0,dist/* toNum */.leg)(orderId.priceInTicks), marketAddress.toBase58());\n const size = phoenixClient.baseAtomsToRawBaseUnits(phoenixClient.baseLotsToBaseAtoms((0,dist/* toNum */.leg)(order.numBaseLots), marketAddress.toBase58()), marketAddress.toBase58());\n const side = (0,helpers/* fromOrderSequenceNumberToOrderSide */.be)(orderId.orderSequenceNumber);\n ;\n newMyOpenOrders.push({\n order,\n orderId,\n slot,\n time,\n side,\n orderSequenceNumber,\n price,\n size\n });\n }\n }\n } else {\n ;\n }\n return {\n traderState,\n traderAccountAddress,\n traderBaseTokenAta,\n traderQuoteTokenAta,\n myOpenOrders: newMyOpenOrders\n };\n },\n refetchOnWindowFocus: false,\n enabled: Boolean((settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_feature_enabled) && publicKey && marketInfo),\n keepPreviousData: true\n });\n (0,useRollbarPerson/* useRollbarPerson */.C)({\n wallet_address: (publicKey === null || publicKey === void 0 ? void 0 : publicKey.toBase58()) || \"anonymous\",\n orderbook_trader_address: ((_result_data = result.data) === null || _result_data === void 0 ? void 0 : (_result_data_traderAccountAddress = _result_data.traderAccountAddress) === null || _result_data_traderAccountAddress === void 0 ? void 0 : _result_data_traderAccountAddress.toBase58()) || \"anonymous\"\n });\n return {\n ...result,\n isTraderInfoLoading: result.isLoading || result.isFetching\n };\n};\n/* harmony default export */ var use_fetch_trader_info = (useFetchTraderInfo);\n\n// EXTERNAL MODULE: ./src/components/limit-order/utils.ts\nvar utils = __webpack_require__(65992);\n;// CONCATENATED MODULE: ./src/components/limit-order/context.tsx\n\n\n\n\n\n\n\n\n\n\n\n\nconst initContextState = {\n markets: [],\n myOpenOrders: [],\n isMarketInfoLoading: false,\n isTraderInfoLoading: false,\n switchMintAddresses: ()=>null,\n setMintAddresses: ()=>null,\n shouldInvertPrice: false,\n normalizeBaseUnits: ()=>undefined,\n normalizeQuoteUnits: ()=>undefined,\n normalizePrice: ()=>0\n};\nconst LimitOrderContext = /*#__PURE__*/ (0,react.createContext)(initContextState);\nconst LimitOrderProvider = (param)=>{\n let { children } = param;\n const { mintAddresses , setMintAddresses } = (0,use_token_mint_addresses/* default */.Z)([\n \"\",\n \"\"\n ]);\n const { tokenListMap , getTokenInfo } = (0,use_tokens/* useTokens */.rU)(true);\n const [inputMintAddress, outputMintAddress] = (0,react.useMemo)(()=>mintAddresses, [\n mintAddresses\n ]);\n const [tokenIn, tokenOut] = (0,react.useMemo)(()=>[\n inputMintAddress ? getTokenInfo(inputMintAddress) : undefined,\n outputMintAddress ? getTokenInfo(outputMintAddress) : undefined\n ], [\n getTokenInfo,\n inputMintAddress,\n outputMintAddress\n ]);\n const switchMintAddresses = (0,react.useCallback)(()=>{\n setMintAddresses((param)=>{\n let [a, b] = param;\n return [\n b,\n a\n ];\n });\n }, [\n setMintAddresses\n ]);\n const { data: markets , isFetching: isMarketsFetching } = (0,use_fetch_all_markets/* default */.Z)();\n const marketAddress = (0,react.useMemo)(()=>{\n if (!markets) return;\n const market = markets.find((param)=>{\n let { base_token_mint_address , quote_token_mint_address } = param;\n return isEqual_default()([\n base_token_mint_address,\n quote_token_mint_address\n ].sort(), [\n tokenIn === null || tokenIn === void 0 ? void 0 : tokenIn.address,\n tokenOut === null || tokenOut === void 0 ? void 0 : tokenOut.address\n ].sort());\n }) || markets[0];\n return new index_browser_esm.PublicKey(market.market_address);\n }, [\n markets,\n tokenIn === null || tokenIn === void 0 ? void 0 : tokenIn.address,\n tokenOut === null || tokenOut === void 0 ? void 0 : tokenOut.address\n ]);\n const { data: marketInfo , isLoading: isMarketInfoLoading , isPreviousData: isMarketInfoStale } = (0,use_fetch_market_info/* default */.Z)(marketAddress);\n const [baseToken, quoteToken] = (0,react.useMemo)(()=>{\n if (isMarketInfoStale) {\n return [\n tokenIn && tokenListMap.get(tokenIn.address),\n tokenOut && tokenListMap.get(tokenOut.address)\n ];\n }\n return [\n (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.baseTokenMintAddress) && tokenListMap.get(marketInfo.baseTokenMintAddress.toBase58()),\n (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.quoteTokenMintAddress) && tokenListMap.get(marketInfo.quoteTokenMintAddress.toBase58())\n ];\n }, [\n isMarketInfoStale,\n marketInfo,\n tokenIn,\n tokenListMap,\n tokenOut\n ]);\n const { data: traderInfo , isTraderInfoLoading } = use_fetch_trader_info({\n marketAddress,\n marketInfo\n });\n const priceLadder = (0,react.useMemo)(()=>{\n if (isMarketInfoStale || !(marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState)) return;\n const priceLadder = marketInfo.marketState.getUiLadder();\n priceLadder.asks.sort((a, b)=>b.price - a.price);\n return priceLadder;\n }, [\n isMarketInfoStale,\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState\n ]);\n (0,react.useEffect)(()=>{\n /**\n * Double check again if the tokenIn and tokenOut that get from the URL is entered by user manually\n * IF the pair is not available, reset to the default of tokenIn and tokenOut\n */ if (!isMarketInfoStale && (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.baseTokenMintAddress) && (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.quoteTokenMintAddress) && tokenIn && tokenOut) {\n const baseTokenMintAddress = marketInfo.baseTokenMintAddress.toBase58();\n const quoteTokenMintAddress = marketInfo.quoteTokenMintAddress.toBase58();\n const isMatched = isEqual_default()([\n baseTokenMintAddress,\n quoteTokenMintAddress\n ].sort(), [\n tokenIn.address,\n tokenOut.address\n ].sort());\n if (!isMatched) {\n setMintAddresses([\n baseTokenMintAddress,\n quoteTokenMintAddress\n ]);\n }\n }\n }, [\n isMarketInfoStale,\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.baseTokenMintAddress,\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.quoteTokenMintAddress,\n tokenIn,\n tokenOut,\n setMintAddresses\n ]);\n const [uiBaseToken, uiQuoteToken] = (0,react.useMemo)(()=>baseToken && quoteToken ? (0,utils/* orderTokenInfosByUiQuote */.bS)([\n baseToken,\n quoteToken\n ]) : [\n baseToken,\n quoteToken\n ], [\n baseToken,\n quoteToken\n ]);\n const shouldInvertPrice = (uiQuoteToken === null || uiQuoteToken === void 0 ? void 0 : uiQuoteToken.address) === (baseToken === null || baseToken === void 0 ? void 0 : baseToken.address);\n const uiPriceLadder = (0,react.useMemo)(()=>{\n const invertPriceAndQuantity = (levels)=>levels.map((param)=>{\n let { price , quantity } = param;\n return {\n price: new decimal/* default */.Z(price).pow(-1).toNumber(),\n quantity: new decimal/* default */.Z(price).mul(quantity).toNumber()\n };\n }).sort((a, b)=>b.price - a.price);\n const invertedLadder = priceLadder && {\n asks: invertPriceAndQuantity(priceLadder.bids),\n bids: invertPriceAndQuantity(priceLadder.asks)\n };\n return shouldInvertPrice ? invertedLadder : priceLadder;\n }, [\n priceLadder,\n shouldInvertPrice\n ]);\n const minimumBaseAmount = (0,react.useMemo)(()=>{\n return (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState) && marketInfo.marketState.baseLotsToRawBaseUnits(marketInfo.marketState.rawBaseUnitsToBaseLotsRoundedUp(Number.EPSILON));\n }, [\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState\n ]);\n const normalizeBaseUnits = (0,react.useCallback)((baseUnits)=>{\n return (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState) && marketInfo.marketState.baseLotsToRawBaseUnits(marketInfo.marketState.rawBaseUnitsToBaseLotsRoundedDown(baseUnits));\n }, [\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState\n ]);\n const normalizeQuoteUnits = (0,react.useCallback)((quoteUnits)=>{\n return (marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState) && marketInfo.marketState.quoteLotsToQuoteUnits(marketInfo.marketState.quoteUnitsToQuoteLots(quoteUnits));\n }, [\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState\n ]);\n const normalizePrice = (0,react.useCallback)(function(price) {\n let inverted = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (!(marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState)) {\n return price;\n }\n const op = (x)=>(inverted ? decimal/* default.div */.Z.div(1, x) : new decimal/* default */.Z(x)).toNumber();\n return (0,numeric/* toDecimalSafe */.ci)(op(marketInfo.marketState.ticksToFloatPrice(marketInfo.marketState.floatPriceToTicks(op(price)))), marketInfo.marketState.getPriceDecimalPlaces()).toNumber();\n }, [\n marketInfo === null || marketInfo === void 0 ? void 0 : marketInfo.marketState\n ]);\n const ctxValue = (0,react.useMemo)(()=>{\n return {\n ...initContextState,\n markets: markets || [],\n isMarketInfoLoading: isMarketsFetching || isMarketInfoLoading,\n ...marketInfo || {},\n priceLadder,\n marketAddress,\n baseToken,\n quoteToken,\n isTraderInfoLoading,\n ...traderInfo || {},\n myOpenOrders: (traderInfo === null || traderInfo === void 0 ? void 0 : traderInfo.myOpenOrders) || [],\n tokenIn,\n tokenOut,\n setMintAddresses,\n switchMintAddresses,\n shouldInvertPrice,\n uiBaseToken,\n uiQuoteToken,\n uiPriceLadder,\n normalizeBaseUnits,\n normalizeQuoteUnits,\n normalizePrice,\n minimumBaseAmount\n };\n }, [\n markets,\n marketInfo,\n marketAddress,\n priceLadder,\n isMarketsFetching,\n isMarketInfoLoading,\n baseToken,\n quoteToken,\n traderInfo,\n isTraderInfoLoading,\n tokenIn,\n tokenOut,\n setMintAddresses,\n switchMintAddresses,\n shouldInvertPrice,\n uiBaseToken,\n uiQuoteToken,\n uiPriceLadder,\n normalizeBaseUnits,\n normalizeQuoteUnits,\n normalizePrice,\n minimumBaseAmount\n ]);\n return /*#__PURE__*/ (0,jsx_runtime.jsx)(LimitOrderContext.Provider, {\n value: ctxValue,\n children: children\n });\n};\n/* harmony default export */ var context = (LimitOrderContext);\n\n\n/***/ }),\n\n/***/ 98638:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var react_query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88767);\n/* harmony import */ var _hooks_use_settings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49472);\n/* harmony import */ var _root_cypress_fixtures_orderbook_markets_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2425);\n/* harmony import */ var _utils_apis_orderbook__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26110);\n\n\n\n\nconst useFetchAllMarkets = (enabled)=>{\n const { data: settingsData } = (0,_hooks_use_settings__WEBPACK_IMPORTED_MODULE_1__/* .useSettings */ .r)();\n return (0,react_query__WEBPACK_IMPORTED_MODULE_0__.useQuery)({\n queryKey: [\n \"orderbook-market\"\n ],\n queryFn: async ()=>{\n const markets = await (0,_utils_apis_orderbook__WEBPACK_IMPORTED_MODULE_3__/* .fetchOrderbookMarkets */ .o)();\n return markets;\n },\n initialData: _root_cypress_fixtures_orderbook_markets_json__WEBPACK_IMPORTED_MODULE_2__.data,\n refetchOnWindowFocus: false,\n enabled: enabled !== null && enabled !== void 0 ? enabled : Boolean(settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_feature_enabled)\n });\n};\n/* harmony default export */ __webpack_exports__[\"Z\"] = (useFetchAllMarkets);\n\n\n/***/ }),\n\n/***/ 79868:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _trathailoi_phoenix_orderbook_sdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86439);\n/* harmony import */ var _hooks_use_orderbook_ids__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8307);\n/* harmony import */ var _hooks_use_query_with_subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5785);\n/* harmony import */ var _hooks_use_settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49472);\n/* harmony import */ var _wallet_adapter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(33618);\n\n\n\n\n\nconst useFetchMarketInfo = (marketAddress, enabled)=>{\n const { connection } = (0,_wallet_adapter__WEBPACK_IMPORTED_MODULE_4__/* .useConnection */ .Rc)();\n const { data: settingsData } = (0,_hooks_use_settings__WEBPACK_IMPORTED_MODULE_3__/* .useSettings */ .r)();\n const { programId , seatManagerProgramId } = (0,_hooks_use_orderbook_ids__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z)();\n return (0,_hooks_use_query_with_subscription__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(\"onAccountChange\", {\n queryKey: [\n \"marketState\",\n marketAddress,\n programId.toBase58(),\n seatManagerProgramId.toBase58()\n ],\n queryFn: async ()=>{\n if (!marketAddress) return;\n const phoenixClient = await _trathailoi_phoenix_orderbook_sdk__WEBPACK_IMPORTED_MODULE_0__/* .Client.createWithoutConfig */ .KUN.createWithoutConfig(connection, programId, seatManagerProgramId, [\n marketAddress\n ]);\n phoenixClient.printLadder(marketAddress.toBase58());\n const marketState = phoenixClient.marketStates.get(marketAddress.toBase58());\n const baseTokenMintAddress = marketState === null || marketState === void 0 ? void 0 : marketState.data.header.baseParams.mintKey;\n const quoteTokenMintAddress = marketState === null || marketState === void 0 ? void 0 : marketState.data.header.quoteParams.mintKey;\n const result = {\n phoenixClient,\n marketState,\n baseTokenMintAddress,\n quoteTokenMintAddress\n };\n return result;\n },\n refetchOnWindowFocus: false,\n enabled: enabled !== null && enabled !== void 0 ? enabled : Boolean((settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_feature_enabled) && marketAddress),\n keepPreviousData: true,\n subscriptionOptions: marketAddress\n });\n};\n/* harmony default export */ __webpack_exports__[\"Z\"] = (useFetchMarketInfo);\n\n\n/***/ }),\n\n/***/ 65992:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"bS\": function() { return /* binding */ orderTokenInfosByUiQuote; }\n/* harmony export */ });\n/* unused harmony exports FIAT_TOKENS, orderTokensByUiQuote */\n/* harmony import */ var _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27632);\n/* harmony import */ var _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28309);\n\n\nconst FIAT_TOKENS = [\n _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__/* .REVND_MINT_ADDRESS */ .PW,\n _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__/* .RENGN_MINT_ADDRESS */ .f_\n];\n/**\n * Returns the ordered token pair `[base, quote]` (`1 base = X quote`) to be\n * used for rate displaying purposes.\n */ const orderTokensByUiQuote = function(defaultOrder) {\n let currentPair = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultOrder;\n if (defaultOrder.length !== 2 || defaultOrder[0].equals(defaultOrder[1])) {\n throw new Error(\"Invalid default order pair.\");\n }\n if (currentPair[0].equals(currentPair[1]) || currentPair.filter((mint)=>mint.equals(defaultOrder[0]) || mint.equals(defaultOrder[1])).length !== 2) {\n throw new Error(\"Invalid current pair.\");\n }\n const [token0, token1] = currentPair;\n const isToken0Fiat = FIAT_TOKENS.includes(token0.toBase58());\n const isToken1Fiat = FIAT_TOKENS.includes(token1.toBase58());\n if (isToken0Fiat && isToken1Fiat) {\n return defaultOrder;\n }\n if (isToken0Fiat) {\n return [\n token1,\n token0\n ];\n }\n if (isToken1Fiat) {\n return [\n token0,\n token1\n ];\n }\n if (token0.toBase58() === _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__/* .REUSD_MINT_ADDRESS */ .Df) {\n return [\n token1,\n token0\n ];\n }\n if (token1.toBase58() === _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__/* .REUSD_MINT_ADDRESS */ .Df) {\n return [\n token0,\n token1\n ];\n }\n if (token0.toBase58() === _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__/* .RENEC_MINT_ADDRESS */ .vV) {\n return [\n token1,\n token0\n ];\n }\n if (token1.toBase58() === _hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__/* .RENEC_MINT_ADDRESS */ .vV) {\n return [\n token0,\n token1\n ];\n }\n return defaultOrder;\n};\n/**\n * Wrapper of {@link orderTokensByUiQuote} for {@link TokenInfo}.\n */ const orderTokenInfosByUiQuote = function(defaultOrder) {\n let currentPair = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultOrder;\n const [token0] = orderTokensByUiQuote([\n new _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__.PublicKey(defaultOrder[0].address),\n new _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__.PublicKey(defaultOrder[1].address)\n ], [\n new _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__.PublicKey(currentPair[0].address),\n new _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__.PublicKey(currentPair[1].address)\n ]);\n const isFirstToken0 = currentPair[0].address === token0.toBase58();\n return [\n isFirstToken0 ? currentPair[0] : currentPair[1],\n isFirstToken0 ? currentPair[1] : currentPair[0]\n ];\n};\n\n\n/***/ }),\n\n/***/ 8307:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27632);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67294);\n/* harmony import */ var _hooks_use_settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49472);\n/* harmony import */ var _utils_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(73680);\n\n\n\n\nconst useOrderbookIds = ()=>{\n const { data: settingsData } = (0,_hooks_use_settings__WEBPACK_IMPORTED_MODULE_2__/* .useSettings */ .r)();\n return (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n return {\n programId: new _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__.PublicKey((settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_program_id) || _utils_helpers__WEBPACK_IMPORTED_MODULE_3__/* .DEFAULT_ORDERBOOK_PROGRAM_ID */ .Nz),\n seatManagerProgramId: new _solana_web3_js__WEBPACK_IMPORTED_MODULE_0__.PublicKey((settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_seat_manager_program_id) || _utils_helpers__WEBPACK_IMPORTED_MODULE_3__/* .DEFAULT_ORDERBOOK_SEAT_MANAGER_PROGRAM_ID */ .oI)\n };\n }, [\n settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_program_id,\n settingsData === null || settingsData === void 0 ? void 0 : settingsData.orderbook_seat_manager_program_id\n ]);\n};\n/* harmony default export */ __webpack_exports__[\"Z\"] = (useOrderbookIds);\n\n\n/***/ }),\n\n/***/ 20356:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"__N_SSP\": function() { return /* binding */ __N_SSP; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85893);\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5152);\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_dynamic__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_limit_order_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97527);\n/* harmony import */ var _layouts_MainLayout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72026);\n\n\n\n\nconst LimitOrderPage = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(()=>Promise.all(/* import() */[__webpack_require__.e(7333), __webpack_require__.e(8562), __webpack_require__.e(2929), __webpack_require__.e(8739)]).then(__webpack_require__.bind(__webpack_require__, 28739)), {\n loadableGenerated: {\n webpack: ()=>[\n /*require.resolve*/(28739)\n ]\n },\n ssr: false\n});\nconst OrderBook = ()=>{\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_layouts_MainLayout__WEBPACK_IMPORTED_MODULE_3__/* .MainLayout */ .Z, {\n hasNautilus: true,\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_limit_order_context__WEBPACK_IMPORTED_MODULE_2__/* .LimitOrderProvider */ .v, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LimitOrderPage, {})\n })\n });\n};\nvar __N_SSP = true;\n/* harmony default export */ __webpack_exports__[\"default\"] = (OrderBook);\n\n\n/***/ }),\n\n/***/ 26110:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"$\": function() { return /* binding */ fetchOrderbookLookupTables; },\n \"o\": function() { return /* binding */ fetchOrderbookMarkets; }\n});\n\n// EXTERNAL MODULE: ./src/constants/index.ts\nvar constants = __webpack_require__(1880);\n;// CONCATENATED MODULE: ./cypress/fixtures/orderbook-lookup-tables.mainnet.json\nvar orderbook_lookup_tables_mainnet_namespaceObject = JSON.parse('{\"BboKhELy5TLk8AUqiDCfsb3gZS8NHWaS3V2nG9rXUBar\":\"DCoaPzp5TjptqHkWAzX6BJvg3Ai7MRCe74y3pT5c4aVi\",\"79v1HvSAfapg6RtKrwvYweN13HxhxVxLovNc5eZsvy9C\":\"64TByJBbMEjnGB6zJG8TCuWmj2rHWFB1WY2snV7dhqx3\",\"7KWYo2oAjjwPTyV1yUiHTd2fxYjoPzvJm7c6GY3MTSjx\":\"DRqgX8gAHSi2cZHyc1G5cRNNfhNgDykSKJPahGb6bDdc\",\"TYJsWAUmkfZDgs6oFcJkKnuCXJZLhN9t7Em44XsVCPR\":\"HFV5EaKd2MWNFcKRNL4X7RXpA5XaSdkLmDBmBQ63kJKH\",\"3Mw5ciN8xTeEivzBnRdmtdWewxsiDuYwPrbqW9Qz9S1m\":\"B2wWP7CYxJrP3sZqGG76hefjkJ8pbDyn4D1mUcSxCxgE\",\"BcHeXUmmD3qRcm1fMdWHtyXCxuWpV67kpp9kSKNTwVYQ\":\"7RM33LewLdZ7SdqshYsVFuUwsh8voogFojAsF8STgpJ7\",\"9jmYELw1BK8yLP3TJtuGUmue39iwnjcs3rD4micSGVeT\":\"FetgcKWrcT2KMHc8cUjkxmLxtP6ub2Pthy6a4DZkWL4v\"}');\n// EXTERNAL MODULE: ./cypress/fixtures/orderbook-lookup-tables.testnet.json\nvar orderbook_lookup_tables_testnet = __webpack_require__(59263);\n// EXTERNAL MODULE: ./cypress/fixtures/orderbook-markets.json\nvar orderbook_markets = __webpack_require__(2425);\n;// CONCATENATED MODULE: ./cypress/fixtures/orderbook-markets.mainnet.json\nvar orderbook_markets_mainnet_namespaceObject = JSON.parse('{\"data\":[{\"market_address\":\"BboKhELy5TLk8AUqiDCfsb3gZS8NHWaS3V2nG9rXUBar\",\"base_token_mint_address\":\"GwPQTMg3eMVpDTEE3daZDtGsBtNHBK3X47dbBJvXUzF4\",\"quote_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\"},{\"market_address\":\"79v1HvSAfapg6RtKrwvYweN13HxhxVxLovNc5eZsvy9C\",\"base_token_mint_address\":\"GwGh3b7iNibT3gpGn6SwZA9xZme7Th4NZmuGVD75jpZL\",\"quote_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\"},{\"market_address\":\"7KWYo2oAjjwPTyV1yUiHTd2fxYjoPzvJm7c6GY3MTSjx\",\"base_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\",\"quote_token_mint_address\":\"2kNzm2v6KR5dpzgavS2nssLV9RxogVP6py2S6doJEfuZ\"},{\"market_address\":\"TYJsWAUmkfZDgs6oFcJkKnuCXJZLhN9t7Em44XsVCPR\",\"base_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\",\"quote_token_mint_address\":\"BfSYryW6Q93iUKE4uNsUtAdxQT9uU4GSVg2si3outLk1\"},{\"market_address\":\"3Mw5ciN8xTeEivzBnRdmtdWewxsiDuYwPrbqW9Qz9S1m\",\"base_token_mint_address\":\"HtzrB8LihudQnWPdtK5rMnyExor8jaufXLJeKybxgBzM\",\"quote_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\"},{\"market_address\":\"BcHeXUmmD3qRcm1fMdWHtyXCxuWpV67kpp9kSKNTwVYQ\",\"base_token_mint_address\":\"AhDXc3sRW1xKPXwDwAmGb4JonRTka5rdSjg43owF53gg\",\"quote_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\"},{\"market_address\":\"9jmYELw1BK8yLP3TJtuGUmue39iwnjcs3rD4micSGVeT\",\"base_token_mint_address\":\"GvTwnAQLTdM6fMZbuGQoVj5odefCC2FsDvaMgxqZV1fi\",\"quote_token_mint_address\":\"4Q89182juiadeFgGw3fupnrwnnDmBhf7e7fHWxnUP3S3\"}]}');\n// EXTERNAL MODULE: ./src/utils/apis/index.ts\nvar apis = __webpack_require__(40795);\n// EXTERNAL MODULE: ./src/utils/helpers.ts\nvar helpers = __webpack_require__(73680);\n;// CONCATENATED MODULE: ./src/utils/apis/orderbook.ts\n\n\n\n\n\n\n\nconst fetchOrderbookMarkets = async ()=>{\n const [, response] = await (0,helpers/* toResultAsync */.zM)(apis/* api.get */.h.get(\"orderbook/markets\"));\n const fixedMarkets = constants/* isMainnet */.mC ? orderbook_markets_mainnet_namespaceObject : orderbook_markets;\n return ((response === null || response === void 0 ? void 0 : response.data) || fixedMarkets.data).filter(Boolean);\n};\nconst fetchOrderbookLookupTables = async ()=>{\n const [, response] = await (0,helpers/* toResultAsync */.zM)(apis/* api.get */.h.get(\"orderbook/lookup-tables\"));\n const fixedLookupTables = constants/* isMainnet */.mC ? orderbook_lookup_tables_mainnet_namespaceObject : orderbook_lookup_tables_testnet;\n return (response === null || response === void 0 ? void 0 : response.data) || fixedLookupTables;\n};\n\n\n/***/ }),\n\n/***/ 59263:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('{\"DAkTPFaX4YcC7Jf2ZbBqEREc7aYLd6pdpFiY1xzCR4F2\":\"E5tEdzxCJNp9ET361Se5kt3Nc1puG1PTZ3zYpWZZCwnW\",\"FYyt3YmdT1wTCy3imJNARrJBQSxh9x3JecDtUheMCrHx\":\"7Ejb5cMCBtc6SYpoXv13ULGheBeQmDux3KantSmPgYpF\",\"DTLaTHF4AN3HERzeYbf9vVugMrPHAoyKag7QN6HYomjn\":\"2f7PbFABojmv5J83z7ZoxNQu5kpDkHd5m5eVJk5kUDcW\",\"sT8JrgChgSfvS9wK5BJpgGLdNFNBs2nw1BCiGF6DsaY\":\"FWQLw6m98m6JGtpLUucUu6rgtGved1ekJzQTDWSZeVEL\"}');\n\n/***/ }),\n\n/***/ 2425:\n/***/ (function(module) {\n\n\"use strict\";\nmodule.exports = JSON.parse('{\"data\":[{\"market_address\":\"DTLaTHF4AN3HERzeYbf9vVugMrPHAoyKag7QN6HYomjn\",\"base_token_mint_address\":\"DSodi59U9ZWRnVgP94VNnKamFybYpsqYj2iKL1jQF7Ag\",\"quote_token_mint_address\":\"Afy8qEgeJykFziRwiCk6tnBbd3uzxMoEqn2GTNCyGN7P\"},{\"market_address\":\"DAkTPFaX4YcC7Jf2ZbBqEREc7aYLd6pdpFiY1xzCR4F2\",\"base_token_mint_address\":\"3GyCTH5u2TgctJUs6vJTMJ51GcBEHo3WBNYfsJJ3Vw3v\",\"quote_token_mint_address\":\"Afy8qEgeJykFziRwiCk6tnBbd3uzxMoEqn2GTNCyGN7P\"},{\"market_address\":\"FYyt3YmdT1wTCy3imJNARrJBQSxh9x3JecDtUheMCrHx\",\"base_token_mint_address\":\"HqNYxW2MztYF8mGp2f9XN6RTE7Xk4KY8nbxAmww6fdH2\",\"quote_token_mint_address\":\"Afy8qEgeJykFziRwiCk6tnBbd3uzxMoEqn2GTNCyGN7P\"},{\"market_address\":\"sT8JrgChgSfvS9wK5BJpgGLdNFNBs2nw1BCiGF6DsaY\",\"base_token_mint_address\":\"CHe7TGhNzxpqiW6pdVJ2H2Mw5t7yHXTNyCfzJ1WFR5Dw\",\"quote_token_mint_address\":\"Afy8qEgeJykFziRwiCk6tnBbd3uzxMoEqn2GTNCyGN7P\"},{\"market_address\":\"5yPaMiC5iUxpX4B9Yvdnk3Bt4bfFD8yAXCMUi4Uh4arD\",\"base_token_mint_address\":\"So11111111111111111111111111111111111111112\",\"quote_token_mint_address\":\"Afy8qEgeJykFziRwiCk6tnBbd3uzxMoEqn2GTNCyGN7P\"}]}');\n\n/***/ })\n\n},\n/******/ function(__webpack_require__) { // webpackRuntimeModules\n/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }\n/******/ __webpack_require__.O(0, [3714,7357,6571,3419,3595,4430,9774,2888,179], function() { return __webpack_exec__(80943); });\n/******/ var __webpack_exports__ = __webpack_require__.O();\n/******/ _N_E = __webpack_exports__;\n/******/ }\n]);"],"names":["self","push","__unused_webpack_module","__unused_webpack_exports","__webpack_require__","window","__NEXT_P","__webpack_exports__","lodash_isEqual__WEBPACK_IMPORTED_MODULE_0__","lodash_isEqual__WEBPACK_IMPORTED_MODULE_0___default","n","next_router__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_2__","_hooks_use_tokens__WEBPACK_IMPORTED_MODULE_3__","useTokenMintAddresses","router","useRouter","isLoading","tokenList","Co","defaultMintAddresses","setDefaultMintAddresses","useState","initMintAddresses","useEffect","mintAddresses","setMintAddresses","foundTokenIn","foundTokenOut","queryPair","String","location","pathname","split","pop","toLowerCase","pairs","length","find","t","token_symbol","prevInAddr","prevOutAddr","newDefaultInAddr","coin_address","newDefaultOutAddr","newAddr","includes","tokenIn","tokenOut","newPairQuery","filter","Boolean","join","searchParams","search","history","replaceState","concat","locale","replace","finalMintAddresses","useMemo","handleSetMintAddresses","useCallback","updater","d","LimitOrderProvider","context","jsx_runtime","index_browser_esm","decimal","isEqual","isEqual_default","react","use_token_mint_addresses","use_tokens","numeric","use_fetch_all_markets","use_fetch_market_info","browser","useRollbarPerson","dist","es","use_nemo_wallet","use_settings","adapter","helpers","useFetchTraderInfo","_marketInfo_marketState","_result_data","_result_data_traderAccountAddress","marketAddress","marketInfo","param","connection","Rc","publicKey","Z","data","settingsData","r","result","useQuery","queryKey","toBase58","marketState","getMarketSequenceNumber","queryFn","phoenixClient","reloadFromNetwork","newMyOpenOrders","traderBaseTokenAta","getBaseAccountKey","traderQuoteTokenAta","getQuoteAccountKey","traderAccountAddress","getSeatKey","traderState","traders","get","traderIndex","traderPubkeyToTraderIndex","slot","clock","time","unixTimestamp","orderId","order","asks","bids","leg","lastValidSlot","lastValidUnixTimestampInSeconds","sub","add","BN","toString","orderSequenceNumber","JLN","price","ticksToFloatPrice","priceInTicks","size","baseAtomsToRawBaseUnits","baseLotsToBaseAtoms","numBaseLots","side","be","myOpenOrders","refetchOnWindowFocus","enabled","orderbook_feature_enabled","keepPreviousData","C","wallet_address","orderbook_trader_address","isTraderInfoLoading","isFetching","utils","initContextState","markets","isMarketInfoLoading","switchMintAddresses","shouldInvertPrice","normalizeBaseUnits","undefined","normalizeQuoteUnits","normalizePrice","LimitOrderContext","createContext","children","tokenListMap","getTokenInfo","rU","inputMintAddress","outputMintAddress","a","b","isMarketsFetching","market","base_token_mint_address","quote_token_mint_address","sort","address","PublicKey","market_address","isPreviousData","isMarketInfoStale","baseToken","quoteToken","baseTokenMintAddress","quoteTokenMintAddress","traderInfo","use_fetch_trader_info","priceLadder","getUiLadder","isMatched","uiBaseToken","uiQuoteToken","bS","uiPriceLadder","invertPriceAndQuantity","levels","map","quantity","pow","toNumber","mul","invertedLadder","minimumBaseAmount","baseLotsToRawBaseUnits","rawBaseUnitsToBaseLotsRoundedUp","Number","EPSILON","rawBaseUnitsToBaseLotsRoundedDown","baseUnits","quoteLotsToQuoteUnits","quoteUnitsToQuoteLots","quoteUnits","inverted","arguments","op","div","x","ci","floatPriceToTicks","getPriceDecimalPlaces","ctxValue","jsx","Provider","value","react_query__WEBPACK_IMPORTED_MODULE_0__","_hooks_use_settings__WEBPACK_IMPORTED_MODULE_1__","_root_cypress_fixtures_orderbook_markets_json__WEBPACK_IMPORTED_MODULE_2__","_utils_apis_orderbook__WEBPACK_IMPORTED_MODULE_3__","useFetchAllMarkets","o","initialData","_trathailoi_phoenix_orderbook_sdk__WEBPACK_IMPORTED_MODULE_0__","_hooks_use_orderbook_ids__WEBPACK_IMPORTED_MODULE_1__","_hooks_use_query_with_subscription__WEBPACK_IMPORTED_MODULE_2__","_hooks_use_settings__WEBPACK_IMPORTED_MODULE_3__","_wallet_adapter__WEBPACK_IMPORTED_MODULE_4__","useFetchMarketInfo","programId","seatManagerProgramId","KUN","createWithoutConfig","printLadder","marketStates","header","baseParams","mintKey","quoteParams","subscriptionOptions","orderTokenInfosByUiQuote","_solana_web3_js__WEBPACK_IMPORTED_MODULE_0__","_hooks_use_tokens__WEBPACK_IMPORTED_MODULE_1__","FIAT_TOKENS","PW","f_","orderTokensByUiQuote","defaultOrder","currentPair","equals","mint","token0","token1","isToken0Fiat","isToken1Fiat","Df","vV","isFirstToken0","react__WEBPACK_IMPORTED_MODULE_1__","_hooks_use_settings__WEBPACK_IMPORTED_MODULE_2__","_utils_helpers__WEBPACK_IMPORTED_MODULE_3__","useOrderbookIds","orderbook_program_id","Nz","orderbook_seat_manager_program_id","oI","__N_SSP","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","next_dynamic__WEBPACK_IMPORTED_MODULE_1__","next_dynamic__WEBPACK_IMPORTED_MODULE_1___default","_components_limit_order_context__WEBPACK_IMPORTED_MODULE_2__","_layouts_MainLayout__WEBPACK_IMPORTED_MODULE_3__","LimitOrderPage","Promise","all","e","then","bind","loadableGenerated","webpack","ssr","OrderBook","hasNautilus","v","fetchOrderbookLookupTables","fetchOrderbookMarkets","constants","orderbook_lookup_tables_mainnet_namespaceObject","JSON","parse","orderbook_lookup_tables_testnet","orderbook_markets","orderbook_markets_mainnet_namespaceObject","apis","response","zM","h","fixedMarkets","mC","fixedLookupTables","module","exports","O","s","_N_E"],"sourceRoot":""}